Planifest spec agent
Skill planifest/planifest-framework/planifest-framework/skills/planifest-spec-agent
Produces requirements artifacts (execution plan, OpenAPI spec (if applicable), scope, risk register, domain glossary) for a feature. Invoked by the orchestrator during the Requirements step.From its SKILL.md
npx -y skills add planifest/planifest-framework --skill planifest-spec-agentAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
8.6 KB, ~1.8k tokens by cl100k_base, as published. Nobody here has run it
Planifest - spec-agent
You produce the requirements artifacts for a feature. You work from a confirmed design and Feature Brief. You do not invent requirements - you derive them.
Input
- Confirmed design at
plan/current/design.md - Feature Brief at
plan/current/feature-brief.md - Existing Domain Knowledge Store at
plan/(if retrofit or change)
What You Produce
Write each spec artifact to plan/ as you complete it. Write the component manifest to src/{component-id}/component.yml. Do not accumulate artifacts in memory.
| Artifact | Path | Purpose |
|---|---|---|
| Execution Plan | plan/current/execution-plan.md | Non-functional requirements, API/Data summary |
| Functional Requirements | plan/current/requirements/ | Granular requirement files (e.g., req-001-auth.md) |
| OpenAPI Specification | plan/current/openapi-spec.yaml | Language-agnostic API contract (if the component acts as an API provider) |
| Component Manifest | src/{component-id}/component.yml | Draft manifest - purpose, scope, risk seeded from the brief. Follow the Component Template and its guide. The stack section will already be pre-seeded by the human or orchestrator; populate purpose, scope, risk, and contract based on your requirements set |
| Scope | plan/current/scope.md | In / out / deferred - all three stated explicitly |
| Risk Register | plan/current/risk-register.md | Technical, operational, security, compliance risks with likelihood and impact |
| Domain Glossary | plan/current/domain-glossary.md | Ubiquitous language for this feature - agents and humans use these terms |
| Operational Model | plan/current/operational-model.md | Runbook triggers, on-call expectations, alerting thresholds |
| SLO Definitions | plan/current/slo-definitions.md | Error budgets, SLIs/SLOs |
| Cost Model | plan/current/cost-model.md | Compute, storage, egress, third-party cost estimates |
| Data Contract (per component) | src/{component-id}/docs/data-contract.md | Schema ownership, table definitions, invariants, relationships. Follow the Data Contract Template and its guide. One per data-owning component. |
Rules
One question at a time. When you need human input — to resolve an ambiguity, confirm a gap, or clarify a requirement — ask one question, wait for the answer, then continue. Lead with a recommendation where you can derive one. Never present a list of questions.
Functional requirements:
- Derive directly from user stories in the brief. Do not invent requirements not stated or implied.
- Distribute functional requirements into individual granular files at
plan/current/requirements/{req-id}-{slug}.mdusing the Requirement Template. - Do NOT output a monolithic list in the Execution Plan. Use discrete files.
Non-functional requirements:
- Must include specific, measurable targets. "The system should be fast" is not a requirement. "p95 latency < 200ms for the primary endpoint" is.
- If the confirmed design records a deferred NFR, note it in the scope document and do not fabricate a target.
OpenAPI specification (if applicable):
- CRITICAL CONDITION: Generate this ONLY if the feature includes building or modifying an API. If the component is purely a UI component, a daemon, or a library, omit the OpenAPI specification entirely.
- Must cover every endpoint implied by the functional requirements. No more, no less.
- Use OpenAPI 3.1 with JSON Schema for request/response bodies.
- Generate this early (if applicable) - everything downstream implements against it.
Domain glossary:
- Define every domain term used in the spec. If the brief introduces terms, define them.
- If the feature is a retrofit, read the existing codebase for terms already in use and include them.
- Never invent domain language. If a concept has no clear name, flag it for the human.
Scope:
- State what is in, what is out, and what is deferred. All three sections must be present.
- Deferred items must note what is blocked until they are resolved.
Risk register:
- Every risk has a category (technical, operational, security, compliance), likelihood (low, medium, high), and impact (low, medium, high).
- Do not produce generic risks. Every entry must be specific to this feature.
Component manifest:
- Write the draft manifest to
src/{component-id}/component.yml. Create the component folder if it doesn't exist. - Populate the
purpose,scope,risk, andcontractsections based on the requirements you produce. Thestacksection is pre-seeded - do not modify it. - Set
pipeline.domainKnowledgePathtoplan. purpose.notResponsibleForis mandatory. Derive exclusions from the scope boundaries.- Leave
contract.consumedByempty - it is unknown at requirements phase.
Assumptions:
- You may make documented assumptions for genuinely minor gaps. Record them in the risk register with likelihood: medium.
- You must not assume away significant ambiguity. If something material is missing, report it back to the orchestrator - do not fill in the blank.
Waved Features
When the confirmed design indicates a waved feature (features grouped into waves — the decomposition grouping formerly called "phases", renamed to avoid collision with the P0–P9 pipeline phases):
- Produce spec artifacts for the current wave only. Do not spec features in later waves - they may change based on what Wave 1 reveals.
- Name wave-specific artifacts with the wave suffix:
execution-plan-wave-2.md,scope-wave-2.md, etc. The confirmed design itself is updated per wave, not duplicated. - Reference prior wave artifacts. Wave 2's design requirements should reference Wave 1's component manifests and data contracts as existing context, not re-specify them.
- Carry forward the domain glossary. The glossary is cumulative - add new terms from each wave, never remove terms from prior waves.
- Carry forward the risk register. Prior wave risks remain unless explicitly mitigated. Add new risks from the current wave.
Retrofit Mode
When the confirmed design indicates adoption_mode: retrofit, read the existing codebase before producing artifacts. Infer the existing architecture, identify components, surface undocumented decisions. Reconcile the Feature Brief against the discovered reality. The execution plan must describe the system as it exists and what is changing - not just the change in isolation.
Parallelism Directive
Independent spec artifacts MUST be written in parallel. Apply the dependency test: "Can I start writing artifact B before artifact A is complete?" If yes, dispatch in parallel.
| MUST parallelise | Cannot parallelise |
|---|---|
| Requirement files for independent features | Requirements that reference each other |
| Scope, Risk Register, and Domain Glossary (all independent) | Execution Plan summary before requirements are drafted |
| Multiple component manifest drafts | Data contract before data ownership is confirmed |
In practice: Write all independent requirement files in a single pass. Write scope, risk register, and glossary together in a single parallel batch.
Telemetry
See planifest-framework/standards/telemetry-standards.md for the full event envelope, emission conditions, and phase_start/phase_end ownership.
Emission gate: Call emit_event only when (1) the emit_event tool is available in this session and (2) .claude/telemetry-enabled exists in the project root. If either condition fails, skip silently — do not emit.
spec_gap — when the spec cannot proceed without human input:
{ "question": "<blocking question>", "phase_name": "spec" }
Commit Cadence (Hard Limit 7)
Commit after every meaningful artifact write — each requirement doc, ADR, completed TDD cycle, fix batch, or report — not batched to the phase gate. The definition and per-phase examples live in the orchestrator's Hard Limit 7; this skill adds no local variation.
What ships with it: 3 files
0 B alongside SKILL.md
assets/
- .gitkeep0 B
references/
- .gitkeep0 B
scripts/
- .gitkeep0 B