specd-new
Explore what the user wants to do and create a new specd change when ready.
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
Explore what the user wants to do and create a new specd change when ready.
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
Write the next artifact for a specd change (or all artifacts in fast-forward mode).
Implement code for a specd change — work through tasks and run hooks.
Verify a specd change's implementation against spec scenarios.
Archive a specd change — reviews deltas and merges them into project specs.
Entry point for specd — detects change state and suggests the next skill to invoke.
Skill: Spec Metadata Generator
| name | specd-new |
| description | Explore what the user wants to do and create a new specd change when ready. |
| allowed-tools | Bash(node *), Read, Grep, Glob, Agent, TaskCreate, TaskUpdate |
| argument-hint | [description of what you want to do] |
Read .specd/skills/shared.md before doing anything.
Explores what the user wants to accomplish, surfaces affected specs, and creates a
change when the picture is clear. Does NOT write any artifacts — that's /specd-design.
specd project context --format text
MUST follow — project context entries are binding directives. If lazy mode returns
summary specs, evaluate and load any that are relevant to the work ahead
(see shared.md — "Processing change context output").
Workspace locality rule — mandatory. External workspaces are still part of the project for discovery work.
specsPath, whether the workspace is local or external.codeRoot when you need to understand
current behavior, dependencies, or likely impact, even if that codeRoot lives
outside the current git root.isExternal does not change permissions; it only tells you the workspace lives
outside the current repository root.ownership controls writes, not reads. readOnly workspaces may still be inspected
for context.Do NOT immediately ask for a name, description, or specIds.
Investigate the codebase if relevant:
specd spec list --format text --summary
Surface existing specs that might be affected. Let the conversation develop naturally.
When a likely affected workspace is external, inspect its code via codeRoot the same
way you would inspect local workspace code. Do not skip it just because it lives in a
different repository directory.
When the user describes affected areas, use graph search to find related symbols and specs:
specd graph search "<keyword>" --format json
If the user mentions specific files or symbols, check their impact to understand scope:
specd graph impact --file "<workspace:path>" --direction both --format json
specd graph impact --symbol "<name>" --direction both --format json
This helps you surface specs and code areas the user may not have considered. If riskLevel
is HIGH or CRITICAL, mention it — it affects how many specs should be in scope.
When the picture is clear enough, first check workspace ownership:
specd config show --format json
From the JSON output, build a map of each workspace's ownership. For each spec you're
about to propose, determine which workspace it belongs to.
If any proposed spec belongs to a readOnly workspace, do NOT include it. Tell the user:
<workspace:spec-path>belongs to workspace<workspace>which isreadOnly— it can't be modified by a change. Want to use it as context instead, or change the workspace ownership inspecd.yaml?
Only propose specs from owned or shared workspaces:
Based on our discussion:
- Name:
<kebab-case-slug>- Description:
<one-liner>- Initial specs:
<workspace:path>, ...(or none yet — we can add them during design)Want me to create this change?
Wait for confirmation.
specd change create <name> --spec <workspace:path> --description "<desc>" --format json
The response includes changePath — the directory where artifacts will be written.
If change create fails with Change '<name>' already exists, the change is already
in progress. Load its status and redirect:
specd change status <name> --format json
Read state and review from the response.
If review.required is true, suggest /specd-design <name> regardless of
the lifecycle state. Summarize review.reason and review.affectedArtifacts,
then stop.
If review.required is false, suggest based on state:
| State | Suggest |
|---|---|
drafting / designing | /specd-design <name> |
ready | Review artifacts, then /specd-implement <name> if approved |
implementing / spec-approved | /specd-implement <name> |
verifying | /specd-verify <name> |
done / signed-off | /specd-verify <name> (handles done→archivable transition) |
pending-signoff | "Signoff pending. Run: specd change approve signoff <name> --reason ..." |
archivable | /specd-archive <name> |
pending-spec-approval | "Approval pending. Run: specd change approve spec <name> --reason ..." |
Stop — do not continue.
specd change run-hooks <name> drafting --phase pre
specd change hook-instruction <name> drafting --phase pre --format text
Follow guidance if any.
If during the discovery conversation you identified dependencies between the specs in the change (or between them and existing specs), register them now:
specd change deps <name> <specId> --add <depId> --add <depId>
This is optional at this stage — dependencies can also be registered later during
/specd-design when the proposal is written. But if the conversation already surfaced
clear dependencies, registering them early means the context compilation will be richer
from the start.
Write a file .specd-exploration.md inside the change directory (<changePath>/.specd-exploration.md).
This file is your own working memory — it must capture everything you learned during
the discovery conversation so that /specd-design can pick up exactly where you left off,
even in a brand-new conversation with zero prior context.
Save everything. Re-read the entire conversation from the beginning and capture every single piece of information that was discussed, no matter how minor it seems. If it came up in the conversation, it goes in the file. Nothing is too small — a passing thought, a tangential issue the user mentioned, a "maybe we should also…", a concern, a rejected idea and why it was rejected. The goal is that someone reading this file with zero context can reconstruct the full picture of the conversation.
Include at minimum:
/specd-design should clarifyStaleness awareness. Time may pass between exploration and design — code may change, specs may be renamed or removed, and decisions may no longer apply. To help the future reader judge freshness:
Generated: YYYY-MM-DD line at the top).Write it in plain markdown, structured for quick scanning. This is for agent use, not user documentation — optimize for completeness and precision over polish. When in doubt about whether to include something: include it.
specd change run-hooks <name> drafting --phase post
specd change hook-instruction <name> drafting --phase post --format text
Follow guidance if any.
specd change status <name> --format json
Show the change state and suggest next step:
Change
<name>created at<changePath>. Run/specd-design <name>to start writing artifacts.
Stop here. Do not start writing artifacts.
Create tasks at the start for session visibility. Update them as you go.
Load project context — mark done after step 1Understand intent — mark done after confirming what the user wantsPropose change — mark done after user confirms name/description/specsCreate change — mark done after CLI creates the change successfullySave exploration context — mark done after writing <changePath>/.specd-exploration.md/specd-designworkspace:capability-path — look up from spec list, never guess