Skip to content
Back to skills

Draft Lld

ASecurity

Create a tech.yaml artifact with project structure, libraries, data model, components, design decisions, and feature mapping from features and architecture specifications

  • 3 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 10, 2026
developmentpythongoreactapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 10, 2026

npx -y skills add kapilvirenahuja/garura --skill draft-lld --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Draft Lld?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Draft Lld
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/kapilvirenahuja-draft-lld/badge)](https://www.skillsdirectory.com/skills/kapilvirenahuja-draft-lld)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: draft-lld
description: Create a tech.yaml artifact with project structure, libraries, data model, components, design decisions, and feature mapping from features and architecture specifications
user-invocable: false
model: sonnet
allowed-tools: Read, Write
---

# draft-lld

Model-invocable skill for creating low-level design specifications as structured YAML.

## Purpose

Transform a features specification and architecture specification into a `tech.yaml` artifact. Captures the implementation-level detail: how the logical architecture breaks down into buildable components, which libraries are used, what the data model looks like, and how features map to components.

This skill produces ONLY `tech.yaml`. Execution order, implementation phases, scenario gates, and phase sequencing are produced by a separate skill and live in `plan.yaml`.

You DO create the tech.yaml artifact. You do NOT validate it, produce plan.yaml, or decide what happens next.

## Output Schema

The output MUST conform to `schemas/tech.yaml` in this skill's directory. Read the schema before producing output. Every field defined in the schema must be present in the output YAML. The schema is the contract — if it's in the schema, it's in the output.

## Input

Receive from agent:
- `features_yaml_path` — (required) Path to features.yaml
- `architecture_yaml_path` — (required) Path to architecture.yaml
- `output_base` — (required) Base path for output, e.g., `.garura/product/architecture/`

## Process

1. **Read inputs:** Load features.yaml and architecture.yaml. Extract: feature list with behaviors, system architecture (deployment units, topology), technology stack (concrete selections), platforms, integrations, NFRs, and design principles.

2. **Determine artifact path:** `{output_base}/tech.yaml`

3. **Check for existing artifact:** Read path. If LOCKED, return structured failure: "tech.yaml is LOCKED -- drop to DRAFT first." If DRAFT exists, overwrite (agent re-triggered DRAFT).

4. **Compose tech.yaml:** Build the artifact conforming to the tech.yaml schema. Every section must be populated. Derive all content from features.yaml and architecture.yaml -- do not invent new technology choices.

   **Top-level fields:**
   - `slug` — from features.yaml slug
   - `status` — always `DRAFT`
   - `created_at`, `updated_at` — current ISO-8601 timestamp
   - `features_ref` — path to features.yaml
   - `architecture_ref` — path to architecture.yaml

   **`project_structure` section:**
   - `directories` — list of directory paths with purpose annotations. Cover all deployment units from architecture.yaml. Each directory: path, purpose.
   - `key_files` — list of significant configuration, entrypoint, and shared files. Each file: path, purpose.
   Structure must be consistent with the component definitions written later in this same artifact.

   **`libraries` section:** Implementation-level library selections -- the concrete packages and modules used within the stack chosen in architecture.yaml. Stack-level choices (React, Python) live in architecture.yaml; this is the next level down (e.g., zustand for state, pydantic for validation, zod for schemas). For each library: name, version (or version range), purpose, component (which core component uses it), rationale.

   **`data_model` section:**
   - `entities` — list of entities with fields (name, type, constraints) and indexes
   - `relationships` — list of entity relationship descriptions
   - `migration_notes` — strategy for schema evolution
   Skip this section only if the product has no persistent data layer -- set to null with a comment.

   **`components` section:** One entry per major buildable unit (server, client, worker, service, shared library, module). For each component:
   - `name` — component name (e.g., api-server, web-client, worker, shared-lib)
   - `type` — server | client | worker | service | library | module
   - `responsibility` — single responsibility description
   - `interfaces` — list of public interfaces, methods, or endpoints
   - `dependencies` — list of other components or external dependencies
   - `key_files` — list of key file paths within this component
   - `libraries` — list of library names from the libraries section used by this component
   - `internal_structure` — description of how this component is organized internally (e.g., routes/, services/, models/, middleware/ subdirectories)
   Components must be consistent with deployment units in architecture.yaml and directory structure in project_structure.

   **`design_decisions` section:** Implementation-level decisions not captured in architecture.yaml -- error handling strategy, naming conventions, config management, internal API contracts, code organization patterns. Each decision: id (DD1, DD2, ...), context, decision, consequence.

   **`feature_mapping` section:** For each feature in features.yaml, produce a mapping entry:
   - `feature_ref` — feature ID (F1, F2, ...)
   - `feature_name` — feature name from features.yaml
   - `components` — which components implement this feature
   - `data_entities` — which data entities this feature reads or writes
   - `libraries` — which libraries this feature depends on
   - `key_files` — the most important files for implementing this feature
   - `implementation_notes` — gotchas, patterns to follow, edge cases specific to this feature

5. **Validate consistency:** Before writing, verify:
   - Every file path in key_files and components is consistent with project_structure directories
   - Every library referenced in feature_mapping and components exists in the libraries section
   - Every component referenced in feature_mapping exists in the components section
   - Every entity referenced in feature_mapping exists in the data_model entities

6. **Write artifact:** Write `tech.yaml` at `{output_base}tech.yaml` with `status: DRAFT`.

7. **Return output.**

## Output

```yaml
tech_yaml:
  path: "{full path to tech.yaml}"
  tech_yaml_path: "{full path to tech.yaml}"
  sections:
    - project_structure
    - libraries
    - data_model
    - components
    - design_decisions
    - feature_mapping
  component_count: {number of components}
  feature_mapping_count: {number of features mapped}
  status: "DRAFT"
```

**IMPORTANT**: This skill produces an artifact and returns metadata. The calling agent receives this output and decides what to do next. Do NOT instruct the agent to return or stop.

## Constraints

### SCOPE (THIS SKILL)
- This skill produces ONLY `tech.yaml` -- project structure, libraries, data model, components, design decisions, feature mapping
- NEVER produce execution order, implementation phases, scenario gates, or phase sequencing in this artifact -- those belong in `plan.yaml`
- NEVER include scenario IDs (e.g., SC-CAP-001) anywhere in tech.yaml
- NEVER reference the scenarios document

### CONSISTENCY
- ALWAYS derive technology decisions from architecture.yaml -- do not invent new stack choices
- ALWAYS ensure file paths in components and feature_mapping are consistent with project_structure directories
- ALWAYS ensure libraries referenced in feature_mapping exist in the libraries section

### ARTIFACT RULES
- NEVER overwrite a LOCKED tech.yaml -- return structured failure
- ALWAYS set `status: DRAFT` in the written artifact
- ALWAYS include all six sections (project_structure, libraries, data_model, components, design_decisions, feature_mapping)
- ALWAYS produce a feature_mapping entry for every feature in features.yaml

## Version

| Field | Value |
|-------|-------|
| Version | 2.0.0 |
| Category | design |

Files in this skill

  • SKILL.md7.5 KB
  • schemas/tech.yaml3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…