Skip to content
Back to skills

Draft Tech Spec

ASecurity

Produce tech.yaml — project structure, library picks, build/test tooling, runtime configuration — from a features spec, technical approach, and architecture inference. Used by tech-architect in the prepare play.

  • 3 stars
  • 0 votes
  • 0 copies
  • 5 views
  • Added September 10, 2026
toolspythongotestingsecurity

Security analysis

A100/100

Scanned September 10, 2026

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

Installs into .claude/skills of the current project.

Are you the author of Draft Tech Spec?

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

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

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-tech-spec
description: Produce tech.yaml — project structure, library picks, build/test tooling, runtime configuration — from a features spec, technical approach, and architecture inference. Used by tech-architect in the prepare play.
user-invocable: false
model: sonnet
allowed-tools: Read, Write, Grep, Glob
deprecated: true
deprecated_note: '#434 ProductOS realignment — superseded by the command model; retained for Phase E reference, not installed'
---

# draft-tech-spec

Model-invocable skill for authoring `tech.yaml` — the implementation-ready technical specification.

## Purpose

Given upstream specification artifacts (features, technical-approach, architecture-inference), produce a concrete `tech.yaml` naming every library, build tool, test framework, runtime config, and project layout detail needed to begin implementation. No vague references ("a logging library") — every field names a specific technology with a rationale.

Previously authored inline by tech-architect.

## Input

| Field | Required | Description |
|-------|----------|-------------|
| `features_yaml_path` | yes | Path to features.yaml |
| `technical_approach_path` | optional | Path to technical-approach.md if drafted |
| `architecture_inference_path` | optional | Path to architecture-inference.yaml if this is a brownfield project |
| `project_profile_path` | optional | Path to project-profile.yaml for appetite / scale / compliance context |
| `ltm_architecture_path` | optional | Path to core LTM architecture knowledge |
| `output_base` | yes | Directory to write tech.yaml |

## Process

1. **Read features.yaml.** Extract product identity, behaviors, architectural invariants, scope.

2. **Read technical-approach + architecture-inference if provided.** Capture technology decisions already made upstream. In brownfield projects, PREFER continuing existing tech choices over introducing new ones.

3. **Read project profile.** Scale / compliance / security / delivery-ambition values influence library selection (e.g., high-compliance → prefer libraries with audit posture).

4. **Select specific technologies** for every required slot. Cite rationale per pick — reference LTM "When to Choose" matches when available, or cite the brownfield evidence.

5. **Emit tech.yaml:**

   ```yaml
   slug: "{from features}"
   status: DRAFT
   created_at: "{ISO-8601}"
   project_structure:
     layout: "{monorepo | single-package | ...}"
     top_level_dirs: [ ... ]
   language_runtime:
     primary: "{e.g., Python 3.12}"
     secondary: [ ... ]
   libraries:
     web_framework: { name: "...", version_pin: "...", rationale: "..." }
     orm_or_data: { ... }
     validation: { ... }
     logging: { ... }
     auth: { ... }
     # ... every slot required by features + architecture
   build_tooling:
     package_manager: { ... }
     builder: { ... }
     linter: { ... }
     formatter: { ... }
     type_checker: { ... }
   testing:
     unit: { framework, pattern }
     integration: { framework, pattern }
     e2e: { framework, pattern }
   runtime_config:
     config_source: "{env | yaml | toml | ...}"
     secret_source: "{vault | env | ...}"
   observability:
     logs: { ... }
     metrics: { ... }
     tracing: { ... }
   rationale_index:
     - decision: "{technology slot}"
       choice: "{picked}"
       source: "ltm | brownfield | profile | approach"
       reason: "{one line}"
   ```

## Output

```yaml
tech_yaml_path: "{output_base}/tech.yaml"
library_slots_filled: {n}
status: written
```

## Boundaries

- Every library / tool slot MUST be filled with a specific technology — no "TBD", no "a suitable choice", no "any {category}".
- Every choice MUST have a rationale citing a source (LTM / brownfield evidence / profile / upstream approach).
- You do not draft the implementation plan (that is `draft-implementation-plan`'s job).

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.