PR Design Doc
OpenHands/OpenHands
For a non-trivial pull request, write a self-contained HTML design doc under the temporary .pr/ directory and link a visibility-appropriate preview in the PR description, so maintainers grasp the…
Write and update technical design specifications. An agent skill from ewhauser/shuck.
$ npx skills add ewhauser/shuck --skill spec-writer -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ewhauser/shuck spec-writer --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ewhauser/shuck.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/spec-writer .claude/skills/spec-writer && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "spec-writer" agent skill from https://github.com/ewhauser/shuck/tree/main/.claude/skills/spec-writer into .claude/skills/spec-writer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-writer", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ewhauser/shuck/tree/main/.claude/skills/spec-writerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ewhauser/shuck --skill spec-writer -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ewhauser/shuck spec-writer --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ewhauser/shuck.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/spec-writer .agents/skills/spec-writer && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "spec-writer" agent skill from https://github.com/ewhauser/shuck/tree/main/.claude/skills/spec-writer into .agents/skills/spec-writer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-writer", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ewhauser/shuck --skill spec-writer -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ewhauser/shuck spec-writer --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ewhauser/shuck.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/spec-writer .cursor/skills/spec-writer && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "spec-writer" agent skill from https://github.com/ewhauser/shuck/tree/main/.claude/skills/spec-writer into .cursor/skills/spec-writer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-writer", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ewhauser/shuck.git --path .claude/skills/spec-writer--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ewhauser/shuck --skill spec-writer -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ewhauser/shuck spec-writer --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ewhauser/shuck.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/spec-writer .gemini/skills/spec-writer && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "spec-writer" agent skill from https://github.com/ewhauser/shuck/tree/main/.claude/skills/spec-writer into .gemini/skills/spec-writer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-writer", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ewhauser/shuck spec-writerInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ewhauser/shuck --skill spec-writer -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ewhauser/shuck.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/spec-writer .github/skills/spec-writer && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "spec-writer" agent skill from https://github.com/ewhauser/shuck/tree/main/.claude/skills/spec-writer into .github/skills/spec-writer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-writer", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ewhauser/shuck --skill spec-writer -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ewhauser/shuck spec-writer --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ewhauser/shuck.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/spec-writer .opencode/skills/spec-writer && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "spec-writer" agent skill from https://github.com/ewhauser/shuck/tree/main/.claude/skills/spec-writer into .opencode/skills/spec-writer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-writer", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
spec-writerWrite and update technical design specifications. An agent skill from ewhauser/shuck.
Spec Writer is an agent skill from ewhauser/shuck. Write and update technical design specifications. Use this skill whenever the user wants to create a new spec, design doc, or technical specification, update an existing spec, or says things like "spec out X", "write a spec for Y", "create a design doc", "let's design Z", "add a spec", or "update the spec for W". Also trigger when the user is about to implement a significant feature and there's no spec for it yet — suggest writing one first.
Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Architecture decision records. The repository describes itself as: A lightning fast shell linter/formatter/LSP server with zsh support. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 904974e. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Spec Writer loads about 1.7k tokens when it runs. Until then it costs about 114 tokens; SKILL.md has 789 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from ewhauser/shuck at commit 904974e, republished under its MIT licence (© ewhauser). 789 words, ~1,666 tokens.
.claude/skills/spec-writer/SKILL.md (or your agent's skills folder).Write and maintain technical design specifications that serve as the source of truth for architectural decisions.
Specs answer three questions: what are we building, why this approach over alternatives, and how do we verify it works. They're living documents — they start as proposals and evolve as implementation reveals new constraints.
Before writing anything, check the project's existing specs to understand the local conventions — numbering scheme, section structure, level of detail, and tone. Match what's already there.
Before drafting, read the project's existing specs to learn:
specs/ directory, docs/design/, rfcs/, or similar001-name.md), date prefixes, or plain namesIf the project has no existing specs, use the default structure below. If it does, match the existing style exactly — consistency across specs matters more than any "ideal" format.
Gather enough context to write a solid first draft. The goal is to understand the design space, not to exhaustively specify every detail — that comes through iteration.
Ask about:
Don't ask all of these as a checklist — have a conversation. Some answers will be obvious from context, others will emerge as you discuss. If the user already has a clear picture, move quickly to the draft. If they're still figuring things out, the interview process helps them think through the design.
Write the spec using the project's existing conventions. If there are no existing conventions, use this default structure:
# NNN: Title
## Status
Proposed | Accepted | Implemented | Deprecated
## Summary
One paragraph: what this spec covers and why it exists.
## Motivation
Why is this needed? What problem does it solve? What's the current state?
## Design
The technical details. Use subsections as needed. Include:
- Architecture and component relationships
- API surfaces (with code examples)
- Data models and schemas
- Key algorithms or workflows
- Tables for structured comparisons
- ASCII diagrams for visual relationships
## Alternatives Considered
### Alternative A
Why it was rejected.
### Alternative B
Why it was rejected.
## Security Considerations
If applicable — threat model implications, trust boundaries, input validation.
## Verification
How to verify the spec is correctly implemented:
- Commands to run
- Tests to check
- Behaviors to observeGuidelines for the draft:
Share the draft and refine based on feedback. Common iteration patterns:
Once the spec is accepted, offer to begin implementation if appropriate. The spec serves as the implementation plan — work through it section by section. As implementation progresses and the design evolves, keep the spec in sync. A spec that doesn't match the code is worse than no spec at all.
When updating rather than creating:
When creating a new spec in a numbered series:
008-foo.md and 008-bar.md), that's OK — follow the project's convention© ewhauser, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/spec-writer of ewhauser/shuck.
Open the folder on GitHubat commit 904974e
Spec Writer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Spec Writer this skillewhauser/shuck | 137 | — | ~1.7k | Automated safety check: Pass | MIT | |
| PR Design DocOpenHands/OpenHands | 90k | — | ~2.4k | Automated safety check: Pass | MIT | |
| Cto AdvisorIbrahim-3d/orchestrator-supaconductor | 380 | 4 repos | ~2.4k | Automated safety check: Pass | MIT | |
| Improve Codebase Architectureywwynm/EverythingDone | 144 | 15 repos | ~1.3k | Automated safety check: Pass | GPL-3.0 | |
| Domain Modelingbrim-borium/spotify_sdk | 166 | 5 repos | ~806 | Automated safety check: Pass | Apache-2.0 | |
| Design Doc MermaidSpillwaveSolutions/design-doc-mermaid | 175 | 1 repos | ~5.6k | Automated safety check: Pass | None |
OpenHands/OpenHands
For a non-trivial pull request, write a self-contained HTML design doc under the temporary .pr/ directory and link a visibility-appropriate preview in the PR description, so maintainers grasp the…
Ibrahim-3d/orchestrator-supaconductor
Technical leadership guidance for engineering teams, architecture decisions, and technology strategy.
ywwynm/EverythingDone
Find deepening opportunities in a codebase, informed by the domain language in CONTEXT.md and the decisions in docs/adr/.
brim-borium/spotify_sdk
Build and sharpen a project's domain model. An agent skill from brim-borium/spotify_sdk.
SpillwaveSolutions/design-doc-mermaid
Create Mermaid diagrams (flowchart, sequence, class, ER, state, C4, architecture) from text or source code.
DrCatHicks/learning-opportunities
Facilitates deliberate skill development during AI-assisted coding.
ewhauser/shuck
Profile shuck scripts and large-corpus fixtures, especially requests to profile a corpus script/fixture, reprofile after a shuck performance change, or produce a hotspot table from a samply profile.
ewhauser/shuck
Compare benchmark performance between two git worktrees (or the current worktree vs main).
ewhauser/shuck
Verify ShellCheck conformance for a shuck rule by running the large corpus test, analyzing deltas, and producing a structured bug document in docs/bugs/.
ewhauser/shuck
Fix a shuck lint rule that has conformance deltas against ShellCheck.
ewhauser/shuck
Implement an autofix for an existing shuck-rs lint rule. An agent skill from ewhauser/shuck.
ewhauser/shuck
Implement a shuck-rs lint rule from its YAML definition in docs/rules/.
Categories
Write and update technical design specifications. An agent skill from ewhauser/shuck. Spec Writer is an agent skill from ewhauser/shuck. Write and update technical design specifications.
Spec Writer fits situations like: the user wants to create a new spec; technical specification; update an existing spec; says things like spec out X.
Run `npx skills add ewhauser/shuck --skill spec-writer -a claude-code`. Or copy the skill folder (.claude/skills/spec-writer in ewhauser/shuck) into .claude/skills/spec-writer in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ewhauser/shuck --skill spec-writer -a codex`. Or copy the skill folder (.claude/skills/spec-writer in ewhauser/shuck) into .agents/skills/spec-writer in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ewhauser/shuck --skill spec-writer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/spec-writer, .gemini/skills/spec-writer, .github/skills/spec-writer and .opencode/skills/spec-writer in your project.
SKILL.md names no scripts, command-line tools or credentials: Spec Writer is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Spec Writer is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.7k tokens (SKILL.md is roughly 6.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Spec Writer: PR Design Doc (OpenHands/OpenHands, 90k stars), Cto Advisor (Ibrahim-3d/orchestrator-supaconductor, 380 stars), Improve Codebase Architecture (ywwynm/EverythingDone, 144 stars) and Domain Modeling (brim-borium/spotify_sdk, 166 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ewhauser (a GitHub user) maintains it in ewhauser/shuck, which has 137 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 5, 2026.
Source: ewhauser/shuck on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.