Plan to spec
Skill risadams/ink-and-agency/skills/meta-orchestration/plan-to-spec
Synthesize the current conversation into a spec (PRD) and stage it as a local file. Use when a design discussion, grilling session, or work-plan is settled and you want it written up as a spec — no interview, just synthesis. Publishing to Confluence is opt-in, only on request.From its SKILL.md
npx -y skills add risadams/ink-and-agency --skill plan-to-specAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 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
6.3 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
Plan to Spec
Turn the current conversation and codebase understanding into a spec, and stage it as a local file. Do not interview the user — synthesize what's already been discussed. To sharpen an idea before it's ready, run /grill-with-docs (or /work-plan for a large effort) first; this skill is the write-up step after the thinking is done.
Local-first. The spec is written to local storage by default. It is never pushed to Confluence (or any remote) without the user explicitly asking, and never without confirming the destination first. The local file is the source of truth; Confluence is an optional downstream copy.
Process
1. Resolve the staging location
The spec lands in a staging directory the user controls, laid out spec-kit style: one numbered feature folder per spec.
<staging>/NNN-<feature-slug>/spec.md
Resolve <staging> in this order:
- A path the user passed as an argument this run.
- The memory default
reference_plan_staging_dir.md, if it exists. - Otherwise ask where to stage (offer a sensible default like
./specs/or.plans/under the repo). Offer to record the answer toreference_plan_staging_dir.mdso future runs skip the prompt — record only if the user agrees.
Pick the next free NNN (zero-padded, starting 001) in the staging dir and a kebab-case <feature-slug> from the feature name. State the resolved path back before writing.
2. Explore the repo
If not already, explore to ground the spec in the current code. Use the project's domain vocabulary throughout (CONTEXT.md glossary if present) and respect ADRs in the area you're touching.
3. Sketch the test seams
Name the seams at which the feature will be tested. Prefer existing seams to new ones, and the highest seam possible — the fewer seams across the codebase, the better; one is ideal. Check the seams match the user's expectations before writing.
4. Write the spec locally
Write the template below to <staging>/NNN-<feature-slug>/spec.md. Report the file path. This is where the skill stops by default — the spec is staged, ready for /plan-to-tickets.
<Feature name> — Spec
Problem Statement
The problem the user faces, from the user's perspective.
Solution
The solution, from the user's perspective.
User Stories
A LONG, numbered list, each As an <actor>, I want <feature>, so that <benefit>. Cover every aspect of the feature — be extensive.
Implementation Decisions
Modules built/modified, their changed interfaces, technical clarifications, architectural decisions, schema changes, API contracts, specific interactions. Do not include file paths or code snippets — they go stale. Exception: a prototype snippet that encodes a decision more precisely than prose (state machine, reducer, schema, type shape) — inline the decision-rich parts and note it came from a prototype.
Testing Decisions
What makes a good test here (external behaviour, not implementation details); which modules will be tested; prior art (similar tests already in the codebase).
Out of Scope
What this spec deliberately excludes.
Further Notes
Anything else.
</spec-template>5. Publish to Confluence — only if asked
If — and only if — the user asks to publish, confirm the destination first (space + parent page, read the space key from reference_confluence_default_space.md), then create the page (confluence_create_page) from the staged spec.md. If the discussion traces to a Jira ticket, add a remote link from that ticket to the page (jira_add_remote_link). Record the published URL back into the local spec.md (a > Published: <url> line at the top) so the local copy points at its remote twin. Report the URL.
Rules
- Local-first, always. Write the local
spec.mdbefore anything else. It is the source of truth. - No remote writes without an explicit ask AND a confirmed destination. Never publish to Confluence by default; never publish without confirming space/parent first.
- Staging location is the user's to choose. Argument > memory default > ask. Persist the default only with consent.
- Synthesize, don't interview. If you're asking design questions, the thinking isn't done — that's
/grill-with-docs.
The staged spec feeds /plan-to-tickets, which breaks it into a local numbered task list.
Quality Loop
Before returning the artifact, evaluate it and refine if it falls short.
- Generate the artifact via the workflow above.
- Self-evaluate against these criteria:
- Spec is staged as a numbered local spec.md (spec-kit style), not published unless asked
- Every requirement traces back to a point settled in the source discussion
- Open questions are listed rather than silently decided
- No implementation detail leaks into what should be a requirements doc
- Loop — if two or more criteria fail, revise and re-check.
- Exit when all criteria pass, or after two refinement passes (then note which criteria still fall short).
<!-- self-evolve:start -->Host portability: tool names follow Claude Code conventions; on other hosts map by intent — see PORTABILITY.md.
Self-Evolve Loop
This skill learns across invocations — the full contract is
SELF-EVOLVE.md. Start: read the learnings
journal — ~/.ink-and-agency/learnings/plan-to-spec.md and/or the workspace-local
.ink-and-agency/learnings/plan-to-spec.md — if present, and apply its guidance.
End: self-evaluate the results; optionally ask the user for feedback (never
block on it); append signal-bearing learnings to the journal (user-global when
the sandbox allows writing there, workspace-local otherwise); route
skill-improvement ideas per the contract's tiers — edit the canonical source
when one is present, never the plugin cache.
What ships with it: 2 files
5.6 KB alongside SKILL.md
agents/
- openai.yaml291 B
- README.md5.3 KB