Spec Writer
garrytan/gstack
Converts a vague idea into a precise, executable spec in five phases, files it as an issue and can start an agent on it in a fresh worktree.
Independent audit of sanitized specs in workspace/output/. An agent skill from prime-radiant-inc/greenfield.
$ npx skills add prime-radiant-inc/greenfield --skill second-pass-review -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install prime-radiant-inc/greenfield second-pass-review --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/prime-radiant-inc/greenfield.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/second-pass-review .claude/skills/second-pass-review && 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 "second-pass-review" agent skill from https://github.com/prime-radiant-inc/greenfield/tree/main/skills/second-pass-review into .claude/skills/second-pass-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "second-pass-review", 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/prime-radiant-inc/greenfield/tree/main/skills/second-pass-reviewType 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 prime-radiant-inc/greenfield --skill second-pass-review -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install prime-radiant-inc/greenfield second-pass-review --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/prime-radiant-inc/greenfield.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/second-pass-review .agents/skills/second-pass-review && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "second-pass-review" agent skill from https://github.com/prime-radiant-inc/greenfield/tree/main/skills/second-pass-review into .agents/skills/second-pass-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "second-pass-review", 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 prime-radiant-inc/greenfield --skill second-pass-review -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install prime-radiant-inc/greenfield second-pass-review --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/prime-radiant-inc/greenfield.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/second-pass-review .cursor/skills/second-pass-review && 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 "second-pass-review" agent skill from https://github.com/prime-radiant-inc/greenfield/tree/main/skills/second-pass-review into .cursor/skills/second-pass-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "second-pass-review", 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/prime-radiant-inc/greenfield.git --path skills/second-pass-review--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 prime-radiant-inc/greenfield --skill second-pass-review -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install prime-radiant-inc/greenfield second-pass-review --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/prime-radiant-inc/greenfield.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/second-pass-review .gemini/skills/second-pass-review && 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 "second-pass-review" agent skill from https://github.com/prime-radiant-inc/greenfield/tree/main/skills/second-pass-review into .gemini/skills/second-pass-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "second-pass-review", 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 prime-radiant-inc/greenfield second-pass-reviewInstalls 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 prime-radiant-inc/greenfield --skill second-pass-review -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/prime-radiant-inc/greenfield.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/second-pass-review .github/skills/second-pass-review && 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 "second-pass-review" agent skill from https://github.com/prime-radiant-inc/greenfield/tree/main/skills/second-pass-review into .github/skills/second-pass-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "second-pass-review", 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 prime-radiant-inc/greenfield --skill second-pass-review -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install prime-radiant-inc/greenfield second-pass-review --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/prime-radiant-inc/greenfield.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/second-pass-review .opencode/skills/second-pass-review && 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 "second-pass-review" agent skill from https://github.com/prime-radiant-inc/greenfield/tree/main/skills/second-pass-review into .opencode/skills/second-pass-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "second-pass-review", 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.
second-pass-reviewIndependent audit of sanitized specs in workspace/output/. An agent skill from prime-radiant-inc/greenfield.
Second Pass Review is an agent skill from prime-radiant-inc/greenfield. Independent audit of sanitized specs in workspace/output/. Three parallel LLM-based reviewer roles check structural leakage, content contamination, and behavioral completeness. Run AFTER Layer 5 sanitization, BEFORE implementation handoff.
Its SKILL.md is about 6.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: A Claude Code plugin that reverse-engineers clean behavioral specs, test vectors, and acceptance criteria from any codebase, producing a provenance trail so a fresh team can… The licence is Apache-2.0.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 6e6d4b4. 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 dot).
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.
Second Pass Review loads about 6.1k tokens when it runs. Until then it costs about 65 tokens; SKILL.md has 2,300 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 prime-radiant-inc/greenfield at commit 6e6d4b4, republished under its Apache-2.0 licence (© prime-radiant-inc). 2,300 words, ~6,112 tokens.
.claude/skills/second-pass-review/SKILL.md (or your agent's skills folder).Sanitization is necessary but insufficient. The author of a sanitized spec can't reliably catch their own leaks — the same assumptions that let implementation details slip in during the rewrite also let them slip past a self-review. A fresh read, with no access to the raw analysis, catches drift the author missed.
Sanitization alone misses contamination in predictable categories:
Root causes:
digraph audit_pipeline {
rankdir=TB;
compound=true;
"Layer 5 sanitization complete" [shape=doublecircle];
"Audit PASS — proceed to implementation" [shape=doublecircle];
"STOP: Audit failed after 3 remediation attempts" [shape=octagon, style=filled, fillcolor=red, fontcolor=white];
subgraph cluster_specialist {
label="Parallel Specialist Reviewers (read every file, apply semantic checklists)";
style=dashed;
"structural-leakage-reviewer" [shape=box];
"content-contamination-reviewer" [shape=box];
"behavioral-completeness-reviewer" [shape=box];
}
subgraph cluster_generalist {
label="Parallel Deep-Read Generalists (4-5 files each, full contextual judgment)";
style=dashed;
"deep-read-auditor-1" [shape=box];
"deep-read-auditor-2" [shape=box];
"deep-read-auditor-N" [shape=box];
}
"Merge all audit reports" [shape=box];
"Any FAIL?" [shape=diamond];
"Dispatch targeted fix agents" [shape=box];
"Re-audit failing files" [shape=box];
"Attempts < 3?" [shape=diamond];
"Layer 5 sanitization complete" -> "structural-leakage-reviewer";
"Layer 5 sanitization complete" -> "content-contamination-reviewer";
"Layer 5 sanitization complete" -> "behavioral-completeness-reviewer";
"Layer 5 sanitization complete" -> "deep-read-auditor-1";
"Layer 5 sanitization complete" -> "deep-read-auditor-2";
"Layer 5 sanitization complete" -> "deep-read-auditor-N";
"structural-leakage-reviewer" -> "Merge all audit reports";
"content-contamination-reviewer" -> "Merge all audit reports";
"behavioral-completeness-reviewer" -> "Merge all audit reports";
"deep-read-auditor-1" -> "Merge all audit reports";
"deep-read-auditor-2" -> "Merge all audit reports";
"deep-read-auditor-N" -> "Merge all audit reports";
"Merge all audit reports" -> "Any FAIL?";
"Any FAIL?" -> "Audit PASS — proceed to implementation" [label="all PASS"];
"Any FAIL?" -> "Dispatch targeted fix agents" [label="any FAIL"];
"Dispatch targeted fix agents" -> "Re-audit failing files";
"Re-audit failing files" -> "Attempts < 3?";
"Attempts < 3?" -> "structural-leakage-reviewer" [label="yes"];
"Attempts < 3?" -> "STOP: Audit failed after 3 remediation attempts" [label="no"];
}workspace/output/ — auditors check what reached the output without cross-referencing the raw analysisworkspace/raw/audit/ alongside other analysis artifactsworkspace/output/audit/ so downstream consumers see review outcomesPattern matching is fundamentally the wrong tool for contamination detection. It produces both false positives and false negatives at rates that make it unreliable as a primary mechanism.
False positives are pervasive. Patterns that detect minified identifiers also match regex character classes, priority levels (P0, P1), and standard technology names. Patterns for code structure language match natural English ("cannot function without"). Patterns for module counts match legitimate behavioral quantities ("supports 3 output formats"). An auditor drowning in false positives either wastes time on noise or starts ignoring real findings.
Contextual contamination is invisible to patterns. No regex can detect:
Semantic judgment catches everything patterns miss. The core test is simple: "Would an implementor encounter this exact string without seeing the source code?" An LLM can apply this test to every identifier, name, and reference in a spec, using contextual understanding that patterns lack. This catches minified symbols, internal function names, vendor-specific flags, and structural leakage — all with a single semantic criterion rather than a brittle pattern library.
All auditors — specialist reviewers and deep-read generalists — are LLM agents that read files end-to-end and apply semantic judgment. There is no grep triage phase.
Three parallel agents (structural-leakage-reviewer, content-contamination-reviewer, behavioral-completeness-reviewer) each read every file in workspace/output/specs/ and apply their category-specific checklists. See the role sections below for their checklists.
Each specialist reviewer:
workspace/output/specs/ end-to-endIn parallel with the specialists, dispatch deep-read auditor agents (one per 4-5 domain files) with this prompt template:
Role: deep-read auditor
Skill: second-pass-review
Read each of these files END TO END:
- workspace/output/specs/domains/<file1>.md
- workspace/output/specs/domains/<file2>.md
- ...
## The Test
For every identifier, name, or reference in the spec, ask:
**"Would an implementor encounter this exact string without seeing the source code?"**
If YES (it's in official docs, CLI help, config schemas, API specs, protocol standards) → CLEAN.
If NO (it came from reading the source code, observing internal state, or reverse engineering) → CONTAMINATION.
This test catches everything: minified gibberish, internal function names, internal feature flags, internal telemetry events, source file paths, and line numbers. No pattern list needed — just judgment.
## Common traps
- **Descriptive camelCase**: `shouldRetryOnTimeout` looks like English but it's an internal variable name. A different developer would call it something else. CONTAMINATION.
- **Feature flags with vendor prefixes**: vendor-prefixed flags (e.g., `<vendor>_experiment_*`, `ff_<scope>_*`) — these are internal, not user-facing. CONTAMINATION.
- **Telemetry event names**: `request_rate_limited`, `worker_shutdown_initiated` — internal analytics. CONTAMINATION.
- **Config property names that look behavioral**: `strictSchemaValidation` — is this the actual config key users write, or an internal state property? Check the config schema spec to verify.
## What is NOT contamination
- Environment variables users set: `DATABASE_URL`, `CACHE_DISABLE_TTL`
- CLI flags: `--format`, `--workers`, `--follow`
- Config file keys users type: `upstreams`, `log_level`, `read_timeout`
- API/protocol field names: `Retry-After`, `Content-Type`, `Authorization`
- Public library/tool names: `jq`, `ffmpeg`, `pandoc`
- Standard tech names: `OAuth`, `PKCE`, `TLS`, `JWT`
- IDE names: `PyCharm`, `GoLand`, `VSCode`
For each file, report:
1. PASS or FAIL
2. If FAIL: exact line numbers and the contaminating text
3. Brief explanation of why it's contamination (applying the test above)
Write findings to workspace/raw/audit/deep-read-<batch>.mdFor each file that failed any audit (specialist or generalist), dispatch a fix agent:
Role: contamination fixer
Skill: spec-sanitization (contamination taxonomy + rewrite patterns)
Read workspace/output/specs/domains/<file>.md
The audit found these specific issues:
[paste exact findings with line numbers]
Fix ONLY the identified issues. Do NOT rewrite clean content.
For each fix, apply the appropriate rewrite pattern:
- Minified IDs → remove or describe the behavior
- Line numbers → remove the "line NNN" reference, keep the behavioral content
- Module names → replace with behavioral domain description
- Feature flags → "a feature gate controlling [behavior]"
- Part N: headers → behavioral domain name
Write the corrected file back to the same path.After all fixes, re-run audit (specialists + deep-read) on previously-failing files. Repeat up to 3 times.
Checks whether the organizational structure of workspace/output/ leaks the original's internal module decomposition.
Why this matters: output specs describe behavior, not the original's architecture. An implementer anchored to the original's module structure will reproduce its design — even when a different decomposition would be better for the new implementation. Module counts, inter-module tables, and domain-to-module mappings all encode architectural decisions that should be the implementer's to make fresh.
Read every file in workspace/output/specs/ end-to-end. For each file, check all 8 categories. Apply the core test: "Would an implementor encounter this exact string without seeing the source code?"
Scan all #, ##, ### headers. Flag any header that contains a source module name, internal component name, or internal package name rather than a behavioral domain description.
A header like "Session Management" is behavioral (PASS). A header like "Fx3 Module" or "Part 3: CacheManager" is structural leakage (FAIL).
The Part N: numbering pattern reveals the original module decomposition count and ordering. Any Part N: header is FAIL. Clean specs use behavioral domain names, not numbered parts.
Any reference to a specific count of modules, components, or source files reveals the internal decomposition. FAIL unless the count refers to a user-facing concept (e.g., "supports 3 output formats").
Section headings or content that reference module-to-module relationships (e.g., "cross-module", "inter-module", "module boundary", "module interface", "module dependency"). All are FAIL. Clean specs describe behavioral integration, not module interfaces.
Internal module identifiers from the analysis module map. Any MOD-NNN reference is FAIL.
Tables showing which module consumes which module's interface. Look for language like "consumes", "consumed by", "provides to", "depends on module", "module provides".
"Depends on the API key being set" is behavioral (PASS). "Depends on AuthModule" is structural (FAIL).
Any text that maps a behavioral domain back to its source module(s). Look for language like "from module", "source module", "originally in", "derived from module", "mapped from". All are FAIL.
Any reference to workspace/raw/ or files within it. All are FAIL.
Write detailed report to workspace/raw/audit/structural-leakage.md:
Write summary to workspace/output/audit/structural-summary.md:
Checks whether implementation-specific content from the original source survives in workspace/output/.
Read every file in workspace/output/specs/ end-to-end. For each file, check all 12 categories. Apply the core test: "Would an implementor encounter this exact string without seeing the source code?"
Short alphanumeric tokens that are artifacts of minification or bundling (e.g., Ab2, sp, r0, Fx3, Qz). Look for 2-3 character tokens that have no English meaning and appear in code-like or identifier-like contexts.
Two-letter abbreviations like "UI", "IO", "ID" are OK. Behavioral acronyms like "API", "CLI", "SDK" are OK. If the token has no English meaning, it's contamination.
References to specific source code line numbers (e.g., "line 42", "L157", ":234:"). FAIL unless referencing a user-facing output (e.g., "error reported at line 5 of the config file").
Internal source file paths, import paths, or bundle chunk references. Look for paths containing src/, lib/, dist/, package manager directories, source file extensions in path context, or bundle chunk references (e.g., chunk-042).
FAIL for all internal paths. Clean specs reference user-facing paths only (e.g., ~/.config/app/settings.json).
Named functions, classes, or methods from the source code. Look for camelCase identifiers that look like function/method names (e.g., parseArgs(), serializeResponse()), and PascalCase identifiers that look like class names (e.g., JobRunner, QueueHandler).
Well-known compound words like "JavaScript", "TypeScript", "WebSocket" are legitimate (PASS). Internal names that a different developer would name differently are contamination (FAIL).
Phrases that describe internal code organization rather than observable behavior. Look for text that names specific functions, classes, or methods and describes calling relationships between them.
"Calls the API endpoint" is behavioral (PASS). "Calls parseArgs() which returns..." is code structure (FAIL).
Internal inter-process communication channel identifiers. Look for IPC-prefixed names, channel string literals, or message-passing identifiers that are internal to the implementation.
Rewrite guidance: Replace with "internal messaging mechanism" or describe the behavioral outcome instead.
Internal state management property names — selectors, store accessors, or state library-specific patterns. Look for references to specific state management libraries or their API patterns.
Rewrite guidance: Replace with behavioral descriptions of the managed state (e.g., "session state data", "user preferences store").
Internal feature flag identifiers and telemetry/analytics event names. These are NOT user-facing — they are internal implementation identifiers that happen to be strings rather than minified symbols. Look for:
FF_*, FEATURE_*, vendor-prefixed flags)<vendor>_experiment_*, ff_<scope>_*), experiment_*)The test is: does a user type this? If the user never sees or configures this string, it is an internal identifier and MUST be generalized.
Rewrite guidance: Replace flag names with "a feature gate controlling [behavioral description]". Replace telemetry event names with "a telemetry event recording [what is measured]".
Internal styling class names or module identifiers (CSS classes, BEM naming, styled-component references, styling module paths). FAIL for all. Clean specs describe visual behavior, not styling implementation.
Internal database table names, column names, migration identifiers, or storage API references. Look for SQL statements, database file extensions, migration identifiers, or client-side storage API calls.
Rewrite guidance: Replace with behavioral data persistence descriptions (e.g., "persists session data locally").
External system exception: Matches in workspace/output/specs/contracts/ files (database contracts, API contracts, CLI contracts, format contracts) are NOT contamination. External system contracts document interfaces the reimplementation must conform to — the schema/API/CLI details are behavioral constraints, not implementation choices.
Internal application filenames that are not user-facing. Look for filenames with source code extensions that name internal implementation files rather than user-facing configuration or output files.
User-facing filenames (e.g., config.json, settings.yaml) are PASS. Internal source files (e.g., auth-handler.py, session-manager.go) are FAIL.
Specific selector or accessor patterns from state management libraries (e.g., selectUserState, useSessionStore, getAuthState). FAIL unless describing a user-facing API.
Write detailed report to workspace/raw/audit/content-contamination.md:
Write summary to workspace/output/audit/content-summary.md:
Checks that sanitization preserved all behavioral information. This is the "did we throw the baby out with the bathwater?" check.
Read every file in workspace/output/specs/ end-to-end. For each file, assess behavioral completeness across all 9 categories. The question here is not "is this contaminated?" but "is critical behavioral information missing?"
Count unique SPEC IDs across all output specs. Compare against the SPEC ID index (if one exists in output/). Flag any SPEC IDs that appear in the raw sanitization report but not in output. FAIL if count is significantly lower than expected.
Every stateful behavioral domain should have state machine documentation (states, transitions, triggers). Look for state machine descriptions, state diagrams, transition tables. FAIL if zero across all specs (unless all domains are genuinely stateless).
Specs must document error conditions with equal depth to normal operations. Look for error condition descriptions, failure modes, error responses. FAIL if no error handling documentation exists.
Every spec should document boundary conditions. Look for edge case descriptions, boundary conditions, corner cases, special cases. FAIL if none are documented.
Behavioral branching logic must be documented. Look for decision trees, conditional logic descriptions, branching behavior. FAIL if no branching logic is documented.
Acceptance criteria should reference SPEC IDs they verify. Check workspace/output/validation/ for acceptance criteria with SPEC ID references. FAIL if zero acceptance criteria exist.
Test vectors should exist in workspace/output/test-vectors/ and contain concrete input/output pairs. FAIL if zero test vector files or zero concrete pairs.
Named constants, magic numbers, timeout values, and limits should survive sanitization. Look for numeric values with units (ms, seconds, bytes, KB, MB), and named constants (MAX, MIN, DEFAULT, LIMIT, TIMEOUT, THRESHOLD). Low count may indicate constants were stripped during sanitization.
Every behavioral claim should have MUST/SHOULD/MAY annotation (RFC 2119 language). FAIL if zero requirement-level keywords exist.
Write detailed report to workspace/raw/audit/behavioral-completeness.md:
Write summary to workspace/output/audit/completeness-summary.md:
When any audit role or deep-read agent reports FAIL:
For each affected file, dispatch greenfield:analyzer:
Role: contamination fixer
Skill: spec-sanitization
Read workspace/output/specs/domains/<file>.md
The audit found these specific issues:
- Line [N]: [exact finding and category]
- Line [M]: [exact finding and category]
Fix ONLY the identified issues. For each:
1. Read the surrounding context (5 lines before/after)
2. Determine if this is real contamination or false positive
3. If real: apply the matching rewrite pattern from the skill
4. If false positive: leave unchanged
Write the corrected file back to the same path.workspace/
├── raw/
│ └── audit/ # Detailed reports WITH evidence (stays in raw)
│ ├── structural-leakage.md
│ ├── content-contamination.md
│ └── behavioral-completeness.md
└── output/
└── audit/ # Summaries (outcomes only)
├── structural-summary.md
├── content-summary.md
└── completeness-summary.mdworkspace/output/workspace/output/workspace/output/workspace/raw/audit/workspace/output/audit/ (outcomes only)review-complete git tag applied© prime-radiant-inc, Apache-2.0. 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 skills/second-pass-review of prime-radiant-inc/greenfield.
Open the folder on GitHubat commit 6e6d4b4
Second Pass Review 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 |
|---|---|---|---|---|---|---|
| Second Pass Review this skillprime-radiant-inc/greenfield | 292 | — | ~6.1k | Automated safety check: Pass | Apache-2.0 | |
| Spec Writergarrytan/gstack | 136k | — | ~14k | Automated safety check: Notes | MIT | |
| Specgarden-co/classic-jazz | 2.5k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Spec Driven Workflowalirezarezvani/claude-skills | 28k | — | ~3.9k | Automated safety check: Pass | MIT | |
| Parallels Discord Roundtripopenclaw/openclaw | 392k | — | ~788 | Automated safety check: Pass | MIT | |
| Openclaw Parallels Smokeopenclaw/openclaw | 392k | — | ~8.4k | Automated safety check: Notes | MIT |
garrytan/gstack
Converts a vague idea into a precise, executable spec in five phases, files it as an issue and can start an agent on it in a fresh worktree.
garden-co/classic-jazz
Implement features using Spec Driven Development (SDD) workflow.
alirezarezvani/claude-skills
A skill your agent uses when the user asks to write specs before code, define acceptance criteria, plan features before implementation, generate tests from specifications, or follow spec-first…
openclaw/openclaw
Run macOS Parallels smoke with Discord send, host verification, host reply, and guest readback proof.
openclaw/openclaw
Prepare, snapshot, run, rerun, debug, or interpret OpenClaw Parallels guest install, onboarding, gateway smoke, and upgrade checks across macOS, Windows, and Linux.
affaan-m/ECC
Speed up a task by turning it into a dependency graph of parallel lanes with a lane matrix, batched reads and checks, write surfaces isolated by file, worktree, branch, or service, and a final…
prime-radiant-inc/greenfield
Master methodology for reverse-engineering a codebase into behavioral specs with cited evidence, reading every line across source, binaries, docs, runtime and git history.
prime-radiant-inc/greenfield
Mines tutorials, forums, reviews, issues and changelogs for observed product behavior, using six search channels and consensus analysis.
prime-radiant-inc/greenfield
Runs untrusted analysis targets inside Docker or Podman containers with memory, CPU and process limits, covering image builds, lifecycle, command execution and cleanup.
prime-radiant-inc/greenfield
Finds OpenAPI, GraphQL, Protobuf and JSON Schema files in a codebase and extracts behavioral claims from them as part of a reverse-engineering workflow.
prime-radiant-inc/greenfield
Method for extracting behavioral specifications from a product's public documentation: tiered search order, claim extraction rules, output structure, stop criteria and gap analysis.
prime-radiant-inc/greenfield
Layer 1 skill for SDK and ecosystem analysis. An agent skill from prime-radiant-inc/greenfield.
Independent audit of sanitized specs in workspace/output/. An agent skill from prime-radiant-inc/greenfield. Second Pass Review is an agent skill from prime-radiant-inc/greenfield. Independent audit of sanitized specs in workspace/output/.
Run `npx skills add prime-radiant-inc/greenfield --skill second-pass-review -a claude-code`. Or copy the skill folder (skills/second-pass-review in prime-radiant-inc/greenfield) into .claude/skills/second-pass-review in your project. Claude Code loads it when a task matches its description.
Run `npx skills add prime-radiant-inc/greenfield --skill second-pass-review -a codex`. Or copy the skill folder (skills/second-pass-review in prime-radiant-inc/greenfield) into .agents/skills/second-pass-review 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 prime-radiant-inc/greenfield --skill second-pass-review -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/second-pass-review, .gemini/skills/second-pass-review, .github/skills/second-pass-review and .opencode/skills/second-pass-review in your project.
SKILL.md names no scripts, command-line tools or credentials: Second Pass Review 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.
Second Pass Review is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6.1k tokens (SKILL.md is roughly 24k 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 Second Pass Review: Spec Writer (garrytan/gstack, 136k stars), Spec (garden-co/classic-jazz, 2.5k stars), Spec Driven Workflow (alirezarezvani/claude-skills, 28k stars) and Parallels Discord Roundtrip (openclaw/openclaw, 392k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
prime-radiant-inc (a GitHub organization) maintains it in prime-radiant-inc/greenfield, which has 292 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on August 6, 2026.
Source: prime-radiant-inc/greenfield on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.