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
  • 7 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…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.