Triangulate Spec Review
QoderAI/better-harness
Review and improve architecture specs, ADRs, plugin or agent directory proposals, and other design documents by running multiple independent AI reviewers such as Claude, Qoder, Codex, or Cursor…
Create well-structured RFCs and technical proposals for software projects.
$ npx skills add pproenca/dot-skills --skill dev-rfc -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install pproenca/dot-skills dev-rfc --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/pproenca/dot-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/.experimental/dev-rfc .claude/skills/dev-rfc && 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 "dev-rfc" agent skill from https://github.com/pproenca/dot-skills/tree/master/skills/.experimental/dev-rfc into .claude/skills/dev-rfc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dev-rfc", 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/pproenca/dot-skills/tree/master/skills/.experimental/dev-rfcType 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 pproenca/dot-skills --skill dev-rfc -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install pproenca/dot-skills dev-rfc --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pproenca/dot-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/.experimental/dev-rfc .agents/skills/dev-rfc && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "dev-rfc" agent skill from https://github.com/pproenca/dot-skills/tree/master/skills/.experimental/dev-rfc into .agents/skills/dev-rfc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dev-rfc", 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 pproenca/dot-skills --skill dev-rfc -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install pproenca/dot-skills dev-rfc --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pproenca/dot-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/.experimental/dev-rfc .cursor/skills/dev-rfc && 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 "dev-rfc" agent skill from https://github.com/pproenca/dot-skills/tree/master/skills/.experimental/dev-rfc into .cursor/skills/dev-rfc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dev-rfc", 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/pproenca/dot-skills.git --path skills/.experimental/dev-rfc--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 pproenca/dot-skills --skill dev-rfc -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install pproenca/dot-skills dev-rfc --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pproenca/dot-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/.experimental/dev-rfc .gemini/skills/dev-rfc && 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 "dev-rfc" agent skill from https://github.com/pproenca/dot-skills/tree/master/skills/.experimental/dev-rfc into .gemini/skills/dev-rfc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dev-rfc", 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 pproenca/dot-skills dev-rfcInstalls 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 pproenca/dot-skills --skill dev-rfc -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/pproenca/dot-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/.experimental/dev-rfc .github/skills/dev-rfc && 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 "dev-rfc" agent skill from https://github.com/pproenca/dot-skills/tree/master/skills/.experimental/dev-rfc into .github/skills/dev-rfc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dev-rfc", 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 pproenca/dot-skills --skill dev-rfc -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install pproenca/dot-skills dev-rfc --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pproenca/dot-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/.experimental/dev-rfc .opencode/skills/dev-rfc && 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 "dev-rfc" agent skill from https://github.com/pproenca/dot-skills/tree/master/skills/.experimental/dev-rfc into .opencode/skills/dev-rfc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dev-rfc", 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.
dev-rfcCreate well-structured RFCs and technical proposals for software projects.
Dev Rfc is an agent skill from pproenca/dot-skills. Create well-structured RFCs and technical proposals for software projects. Use this skill whenever the user wants to write an RFC, technical proposal, design doc, architecture doc, or system design overview. Also trigger when the user says things like "write an RFC", "I need to propose a new system", "create a technical proposal", "document the architecture", "write up the design", "I need a design doc", or "explain the system architecture in a doc". Even if they just say "RFC", "design doc", or "arch doc", use…
Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files, including scripts, reference files and assets (for example `assets/marked.min.js`, `assets/mermaid.min.js` and `metadata.json`).
It sits in Development, covering Proposals and quotes and Architecture decision records. The repository describes itself as: A collection of AI agent skills following the Agent Skills open format. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit cf93c57. 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.
Ships 3 files in scripts/ (JavaScript, TypeScript and Python), which the agent can run.
Shell commands in SKILL.md call:
buncurlFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.
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.
Dev Rfc loads about 3.8k tokens when it runs, and up to ~6.7k if it reads all its reference files. Until then it costs about 159 tokens; SKILL.md has 1,860 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); the scripts in this folder are not scanned.
The full file from pproenca/dot-skills at commit cf93c57, republished under its MIT licence (© pproenca). 1,860 words, ~3,801 tokens.
.claude/skills/dev-rfc/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.Write RFCs and technical proposals that serve two purposes: aligning stakeholders on what to build and why (RFCs), and helping engineers understand how a system works (architecture docs). Most real proposals blend both — the skill helps you pick the right sections for the situation.
Read references/template.md for the three structural templates:
Ask the user (or infer from context) which situation they're in:
| Situation | Mode | Key question the doc answers |
|---|---|---|
| Planning a new system or major change | RFC | "Should we build this, and how?" |
| Documenting an existing system | Architecture Doc | "How does this system work?" |
| Proposing a change to an existing system | RFC (with before/after diagrams in Detailed Design) | "Why are we changing this, and what will it look like?" |
| Small scoped change (< 1 week) | One-Pager | "What and why, briefly?" |
For changes to existing systems, use the RFC structure as the backbone but include before/after architecture diagrams in the Detailed Design section, with [NEW] and [CHANGED] markers on components.
docs/rfcs/RFC-NNN-title.md as primary locationARCHITECTURE.md at the repo rootdocs/design/subsystem-name.md or alongside the code it describesIf the user hasn't specified where to put the doc, ask.
Before writing anything, build a mental model.
For RFCs:
For architecture docs:
Follow the appropriate structure from references/template.md. The sections to include depend on mode and project complexity — the template has scaling guidance for small/medium/large projects.
The most important sections per mode:
RFC — the sections approvers care about most:
Architecture Doc — the sections new contributors care about most:
Not all systems are pipelines. Choose the diagram shape that matches the system:
The diagram is the centerpiece. A reader should understand the overall system flow from it alone. Use ASCII box-drawing art. Label stages with module paths and descriptions. Show data formats between stages.
Be concrete, not abstract. Instead of "Module A processes the input and passes it to Module B", write: "Preprocessor::preprocess() emits String (expanded text with line markers), which Lexer::tokenize() consumes to produce Vec<Token>." For proposals, use proposed type/interface names.
Approaches should present genuine alternatives with fair pros/cons. Don't strawman alternatives to make the recommended approach look better. Each approach should have real strengths acknowledged. A reviewer who disagrees with your recommendation should feel their preferred option was represented honestly.
Goals & Non-Goals should be specific and falsifiable. Example (for "migrate auth to OAuth2"):
Goals:
- All user-facing login flows use OAuth2 authorization code flow by end of Q3
- Support Google and GitHub as identity providers at launch
- Session token storage meets SOC 2 requirements (encrypted at rest, 24h max lifetime)
Non-Goals:
- Migrating service-to-service auth (stays on mTLS for now)
- Building a custom identity provider — we'll use Auth0
- Supporting SAML (enterprise SSO is a separate Q4 project)
Service SLAs should be concrete. Don't say "high availability" — state "99.95% uptime." Don't say "low latency" — state "P99 under 300ms." Justify each target.
Separate decisions from philosophy. Key Design Decisions are factual choices ("We use SSA form"). Design Philosophy captures principles that guide ongoing decisions ("Separation of concerns through representations").
For RFCs:
For architecture docs:
After writing the RFC, offer to open a review UI in the user's browser. The review UI runs a local server that auto-saves feedback, supports multiple revision rounds, and lets the user explicitly approve the document.
Path resolution: In the commands below,
$SKILL_PATHrefers to the absolute path of this SKILL.md file. Resolve it as the directory containing this file (e.g., if SKILL.md is at/path/to/dev-rfc/SKILL.md, then$(dirname "$SKILL_PATH")is/path/to/dev-rfc). Requires Bun (or Node 22+ with--experimental-strip-types).
bun run "$(dirname "$SKILL_PATH")/scripts/generate_review.ts" <doc-path> --title "<project name>"localhost:3118 and opens the browser. Feedback auto-saves to <doc-dir>/.rfc-review/feedback.json as the user types (800ms debounce). The server also serves the latest version of the markdown on each refresh.cat <doc-dir>/.rfc-review/feedback.json"status": "approved" — The user approved the RFC. Stop iterating. Announce that the RFC is finalized."status": "needs_revision" — The user wants changes. Proceed to revision."status": "draft" — The user closed the browser mid-review. Ask if they want to continue or if the current draft feedback is sufficient.When revising, prioritize feedback in this order (most specific → most general):
inline_comments) — targeted at specific text. Address each one.sections[].feedback) — per-section concerns. Revise the relevant section.overall_feedback) — broad themes. Apply across the document.Empty feedback for a section means no concerns — skip it. Don't make changes where no feedback was given.
After revising the RFC, start the next review round with the previous feedback visible as read-only context:
bun run "$(dirname "$SKILL_PATH")/scripts/generate_review.ts" <doc-path> --title "<project name>" \
--previous-feedback <doc-dir>/.rfc-review/feedback-history/feedback-round-N.json \
--iteration N+1The server automatically archives the previous feedback.json to feedback-history/feedback-round-N.json on startup. The reviewer sees their previous feedback (read-only) above each section, so they can verify their concerns were addressed.
Repeat the check-status → revise → re-launch loop until the user approves or opts out.
Stop iterating when any of these happen:
"status": "approved")If the server can't start (port conflict, environment issue), fall back to static mode:
bun run "$(dirname "$SKILL_PATH")/scripts/generate_review.ts" <doc-path> --title "<project name>" --staticThis opens a standalone HTML file. Feedback downloads as feedback.json to ~/Downloads on submit. Ask the user where the file landed.
Skip this step entirely if the user wants the doc written directly without a review loop, or for one-pagers.
Instead of writing the entire RFC and then reviewing, use live authoring mode where the UI opens first with a skeleton of all planned sections, you write sections one at a time, each section appears in the browser in real-time, and the user gives per-section feedback before you write the next section.
bun run "$(dirname "$SKILL_PATH")/scripts/generate_review.ts" --live --title "<project name>" \
--sections '["Abstract","Motivation","Goals and Non-Goals","Detailed Design","Approaches","Service SLAs","Rollout Plan"]'For each section in order:
curl -s -X POST http://localhost:3118/api/section/add \
-H 'Content-Type: application/json' \
-d '{"id": "abstract", "heading": "Abstract", "markdown": "## Abstract\n\nYour content here..."}'curl -s http://localhost:3118/api/wait-feedback?section=abstract{"action": "approve"} — Move to the next section.{"action": "request_changes", "text": "..."} — Read the feedback, revise the section, then push the update:curl -s -X POST http://localhost:3118/api/section/update \
-H 'Content-Type: application/json' \
-d '{"id": "abstract", "markdown": "## Abstract\n\nRevised content..."}'/api/wait-feedback?section=abstract again.{"timeout": true} — The user hasn't responded in 5 minutes. Prompt them in the CLI or retry.Once all sections are approved, assemble the full markdown from all approved sections and write it to the target file path. The user can also click "Finalize RFC" in the browser once all sections are approved.
If live mode encounters issues, fall back to batch mode (Step 5) by writing the full RFC first and then opening the standard review UI.
| Change size | Format | Sections |
|---|---|---|
| Small (< 1 week, single component) | One-pager | Problem, Proposed Solution, Rollout |
| Medium (1-4 weeks, multiple components) | Standard RFC | Full RFC or architecture doc |
| Large (> 1 month, cross-team) | Full RFC + sub-docs | Top-level doc + linked sub-docs for subsystems |
Include the status in the metadata header:
© pproenca, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 10 other files (scripts, references, assets) in skills/.experimental/dev-rfc of pproenca/dot-skills.
Open the folder on GitHubat commit cf93c57
Dev Rfc 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 |
|---|---|---|---|---|---|---|
| Dev Rfc this skillpproenca/dot-skills | 214 | — | ~3.8k | Automated safety check: Pass | MIT | |
| Triangulate Spec ReviewQoderAI/better-harness | 2.4k | — | ~614 | Automated safety check: Pass | MIT | |
| Agent Stylepchalasani/claude-code-tools | 2k | — | ~1.4k | Automated safety check: Pass | MIT | |
| Squid Architecture Reviewiusztinpaul/squid | 203 | — | ~2.6k | Automated safety check: Pass | Apache-2.0 | |
| Write Vibe Design Docmistralai/mistral-vibe | 5.1k | — | ~3k | Automated safety check: Pass | Apache-2.0 | |
| Plan ArbiterBuilderIO/skills | 4.5k | — | ~1k | Automated safety check: Pass | MIT |
QoderAI/better-harness
Review and improve architecture specs, ADRs, plugin or agent directory proposals, and other design documents by running multiple independent AI reviewers such as Claude, Qoder, Codex, or Cursor…
pchalasani/claude-code-tools
Literature-backed English technical-prose writing rules (agent-style, 21 rules).
iusztinpaul/squid
Periodic architectural sweep — reads existing ADRs, maps modules/dependencies/layering, and reports up to 10 prioritised findings shaped as refactor proposals /squid-refactor can consume directly.
mistralai/mistral-vibe
Create or update implementation-ready design proposals for Mistral Vibe under docs/design, including a bounded design-tree decision review before drafting.
BuilderIO/skills
A skill your agent uses when asked to compare, cross-review, merge, judge, choose, or arbitrate competing plans from multiple agents such as Codex and Claude Code; when given two or more proposed…
tetherto/qvac
Run the deterministic code-quality audit, turn related findings into contextual remediation groups, prepare approval-gated Asana proposals, reconcile recurring runs, or configure twice-monthly…
pproenca/dot-skills
Audio forensics and voice recovery guidelines for CSI-level audio analysis.
pproenca/dot-skills
Guided, scripted pipeline for running JSX/TSX/React codemods safely across large legacy codebases.
pproenca/dot-skills
Developer-experience friction auditing and fixing — slow onboarding, repeated manual setup steps, missing bootstrap/reset/seed scripts, undiscoverable conventions.
pproenca/dot-skills
Turn a rough idea for a language into a complete, implementable specification — a DSL, query, config/data, template, or protocol language — by interviewing the author dimension by dimension until…
pproenca/dot-skills
Drafting Python Enhancement Proposals (PEPs) — proposing a Python language feature, a standard library change, an interoperability standard, or an informational/process document for the Python…
pproenca/dot-skills
Designs new features, extensions, or modifications to Uncle Bob's Acceptance Pipeline Specification — new mutation strategies, Gherkin syntax support, report formats, pipeline stages, IR fields, or…
Categories
Create well-structured RFCs and technical proposals for software projects. Dev Rfc is an agent skill from pproenca/dot-skills. Create well-structured RFCs and technical proposals for software projects.
Dev Rfc fits situations like: the user wants to write an RFC; technical proposal; architecture doc; system design overview.
Run `npx skills add pproenca/dot-skills --skill dev-rfc -a claude-code`. Or copy the skill folder (skills/.experimental/dev-rfc in pproenca/dot-skills) into .claude/skills/dev-rfc in your project. Claude Code loads it when a task matches its description.
Run `npx skills add pproenca/dot-skills --skill dev-rfc -a codex`. Or copy the skill folder (skills/.experimental/dev-rfc in pproenca/dot-skills) into .agents/skills/dev-rfc 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 pproenca/dot-skills --skill dev-rfc -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dev-rfc, .gemini/skills/dev-rfc, .github/skills/dev-rfc and .opencode/skills/dev-rfc in your project.
Going by SKILL.md and its folder, Dev Rfc needs JavaScript, TypeScript and Python for the scripts in its folder and the command-line tools its instructions call (bun and curl). Our summary lists: Python 3; Node.js.
SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Dev Rfc is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.9k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Dev Rfc: Triangulate Spec Review (QoderAI/better-harness, 2.4k stars), Agent Style (pchalasani/claude-code-tools, 2k stars), Squid Architecture Review (iusztinpaul/squid, 203 stars) and Write Vibe Design Doc (mistralai/mistral-vibe, 5.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
pproenca (a GitHub user) maintains it in pproenca/dot-skills, which has 214 GitHub stars. The repository holds 182 skills in this directory. The repository was last updated on August 15, 2026.
Source: pproenca/dot-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.