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