agentsclimarketplace

Spec

Skill deessejs/skills/skills/spec

Explore a status:ready GitHub issue, write an implementation spec for human review, and push it to the branch. Never writes implementation code.From its SKILL.md

Install
npx -y skills add deessejs/skills --skill spec

Assembled 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.
  • 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.1 KB, ~2.1k tokens by cl100k_base, as published. Nobody here has run it

spec Skill

Read a status:ready GitHub issue, explore the codebase, write a spec, and ask for human approval before implementation begins.

When to use

Trigger phrases: "spec #N", "/spec #N", "write the spec for #N", "plan #N", "/plan #N".

Workflow overview

0. Reset      — return to staging and pull latest
1. Fetch      — read the issue, check status:ready
2. Research   — web search, read codebase, check learnings, challenge the issue
3. Branch     — create impl/{n}-{slug} from staging
4. Explore    — read related files and patterns
5. Resolve    — address blocking questions before writing
6. Write      — build docs/plans/{n}.md from PLAN_TEMPLATE.md
7. Review     — present to human for approval
8. Push       — push branch so the plan persists on origin

§0 — Reset (always)

git checkout staging && git pull origin staging

§1 — Fetch

gh api "https://api.github.com/repos/<org>/<repo>/issues/{n}"

Extract: title, body, labels, comments.

Gate: refuse if not status:ready:

"Issue #{n} does not have the status:ready label. Run /triage #{n} first, or use --force to proceed anyway."

Pass --force to skip this gate if you want to spec a draft issue.

§2 — Research

Before writing a single step, understand the problem deeply.

Read the issue thoroughly:

  • What is the actual problem being solved?
  • Who benefits and how?
  • What are the acceptance criteria?
  • Are the acceptance criteria complete?

Check for existing context:

  • Read existing code in the affected area
  • Check docs/internal/learnings/ for related past decisions
  • Check for ADRs (Architecture Decision Records)
  • Look at similar implementations in the codebase

Web research when needed:

  • Search for how similar problems are solved in other projects
  • Check documentation of libraries or frameworks involved
  • Look for known pitfalls or breaking changes
  • Find best practices for the technology in question

Challenge the issue:

  • Is the proposed solution the right approach?
  • Are there simpler alternatives?
  • What are the trade-offs?
  • Is this scope creep or a genuine requirement?

If the issue is unclear or the solution is wrong, go back to triage. A spec on a flawed plan is wasted effort.

§3 — Branch

Generate slug from title (kebab-case, max 50 chars):

SLUG=$(echo "impl/{n}-$(echo '{issue_title}' | sed 's/[^a-z0-9]+/-/gi' | tr '[:upper:]' '[:lower:]' | sed 's/^-//;s/-$//' | cut -c1-50)")
echo "$SLUG"

Delete if exists, then create from staging:

git branch -D "$SLUG" 2>/dev/null
git push origin --delete "$SLUG" 2>/dev/null
git checkout -b "$SLUG"

§4 — Explore

Read:

  • Files mentioned in the issue's acceptance criteria or description
  • Relevant config (turbo.json, tsconfig.json, eslint.config.mjs, etc.)
  • Existing patterns in the target packages (apps/, packages/)
  • Learning docs in docs/internal/learnings/ if referenced

Keep notes — they feed the spec.

Do not write any implementation code during exploration.

§5 — Resolve blockers

After exploration, assess whether there are open questions that block writing the spec.

Non-blocking questions

If the question can be resolved during implementation (e.g., "what should the error message say?"):

  • Document it in the spec's "Open Questions" section
  • Proceed to §6

Blocking questions

If the spec cannot be written without an answer (e.g., "should this be per-IP or per-user rate limiting?"):

  1. Post a comment on the issue asking the question:
gh issue comment create {n} --body "## Spec question

Before I can write the implementation plan, I need clarification on:

**Question:** {the question}

{a brief explanation of why it matters for the spec}

Please comment so I can proceed with the spec."
  1. Apply needs-info label:
gh issue edit {n} --add-label "needs-info"
  1. Stop — do not write the spec until the question is answered.

When the question is answered, resume from §5.

§6 — Write the spec

Create the plan directory and copy the template:

mkdir -p "docs/plans"
cp .claude/skills/spec/PLAN_TEMPLATE.md "docs/plans/{n}.md"

Fill in every section. Key points:

  • Scope: list what is IN and what is explicitly OUT
  • TL;DR: one sentence — the end state after this PR merges
  • Files to touch: exact paths, not directories
  • Step-by-step: explain what to do and why this order
  • Open questions: list non-blocking questions that will be resolved during implementation
  • Risks: flag breaking-changes, side-effects, migration needs
  • YAML metadata: set status: draft

If the issue is significantly more complex than described, flag it in TL;DR or Risks — do not surprise the reviewer mid-implementation.

§7 — Review (blocking)

Present the spec to the user. Do not proceed without approval.

Use AskUserQuestion with a single approve/reject option. Include:

  • TL;DR
  • Scope (IN / OUT)
  • Files count + step count
  • Key risk (especially if breaking-change label present)
  • Open questions (if any)
  • Branch + docs/plans/{n}.md path

If approved:

  1. Update YAML: status: approved, reviewer: <author>, reviewed: {date}
  2. Push branch

If rejected:

"Spec rejected. Branch {slug} still exists with the spec at docs/plans/{n}.md. Say the word and I'll delete it, or keep it open for later."

§8 — Push

git add docs/plans/{n}.md
git commit -m "docs: write spec for issue #{n}

Co-Authored-By: Claude <[email protected]>"

git push -u origin "{slug}"

Idempotency

  • Spec already approved → "A spec already exists and is approved. Run /implement #{n} to start."
  • Spec is draft → "A draft spec exists. Review it at docs/plans/{n}.md on {slug}, or run /spec #{n} again to overwrite it."

Error handling

SituationAction
Already on a branch§0 resets to staging automatically
Issue not status:ready (no --force)Refuse — see §1
Branch already existsDelete and recreate (see §3)
Blocking question found§5: post comment, stop
No files to exploreWrite spec from issue + research

Constraints

  • Always return to staging first.
  • Refuse if not status:ready (unless --force).
  • Research before planning — do not skip §2.
  • Exploration only — no implementation code.
  • Resolve blocking questions before writing the spec.
  • Push the branch. The spec must persist on origin so /implement can find it.
  • Never write to main or merge directly to main.
  • Adapt staging branch, docs/plans/ path, and assignee <author> to your project conventions.

PLAN_TEMPLATE.md

Copy this to docs/plans/{n}.md when writing a spec.

---
issue: {n}
title: "{issue title}"
author: <author>
generated: {YYYY-MM-DD}
status: draft
reviewer:
reviewed:
branch: impl/{n}-slug
labels: []
priority:
effort:
---

## TL;DR

{One sentence. What is the end state after this PR merges?}

---

## Context

{2–3 sentences. Why does this need to be done? What problem does it solve?}

---

## Scope

**IN:**
- {what this spec covers}

**OUT:**
- {what this spec explicitly does NOT cover}

---

## Files to touch

| File | Action | Why |
|------|--------|-----|
| `path/to/file` | create / edit / delete | reason |

---

## Step-by-step implementation

### Step 1 — {name}

`path/to/file`

- What to do
- Why this approach and not another

#### 1.1 — {sub-step name}

`path/to/file`

- Sub-step detail

### Step 2 — {name}

`path/to/file`

- ...

---

## Acceptance criteria

- [ ] {criterion 1}
- [ ] {criterion 2}

---

## Open questions

These will be resolved during implementation:

- {question 1}
- {question 2}

---

## Risks / edge cases

- {risk 1 — description and mitigation}
- {risk 2 — description and mitigation}

---

## PR metadata

| Field | Value |
|-------|-------|
| **Branch** | `impl/{n}-slug` |
| **PR title** | `{issue title}` |
| **Labels** | `{labels from issue}` |
| **Assignee** | `<author>` |

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.