Foreman Grill Docs
VisionForge-OU/foreman
Headless grilling pass that challenges an approved implementation plan against the existing codebase and domain model, then writes an ADR draft and a PRD draft into the Foreman feature directory.
Produce a complete backend technical design document from a PRD or feature description — understand, explore the codebase, grill on decisions, write, and self-review.
$ npx skills add open-octo/octo-agent --skill tech-design -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install open-octo/octo-agent tech-design --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/open-octo/octo-agent.git skills-src && mkdir -p .claude/skills && cp -r skills-src/internal/skills/defaults/tech-design .claude/skills/tech-design && 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 "tech-design" agent skill from https://github.com/open-octo/octo-agent/tree/main/internal/skills/defaults/tech-design into .claude/skills/tech-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tech-design", 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/open-octo/octo-agent/tree/main/internal/skills/defaults/tech-designType 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 open-octo/octo-agent --skill tech-design -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install open-octo/octo-agent tech-design --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-octo/octo-agent.git skills-src && mkdir -p .agents/skills && cp -r skills-src/internal/skills/defaults/tech-design .agents/skills/tech-design && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "tech-design" agent skill from https://github.com/open-octo/octo-agent/tree/main/internal/skills/defaults/tech-design into .agents/skills/tech-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tech-design", 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 open-octo/octo-agent --skill tech-design -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install open-octo/octo-agent tech-design --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-octo/octo-agent.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/internal/skills/defaults/tech-design .cursor/skills/tech-design && 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 "tech-design" agent skill from https://github.com/open-octo/octo-agent/tree/main/internal/skills/defaults/tech-design into .cursor/skills/tech-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tech-design", 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/open-octo/octo-agent.git --path internal/skills/defaults/tech-design--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 open-octo/octo-agent --skill tech-design -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install open-octo/octo-agent tech-design --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-octo/octo-agent.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/internal/skills/defaults/tech-design .gemini/skills/tech-design && 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 "tech-design" agent skill from https://github.com/open-octo/octo-agent/tree/main/internal/skills/defaults/tech-design into .gemini/skills/tech-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tech-design", 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 open-octo/octo-agent tech-designInstalls 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 open-octo/octo-agent --skill tech-design -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/open-octo/octo-agent.git skills-src && mkdir -p .github/skills && cp -r skills-src/internal/skills/defaults/tech-design .github/skills/tech-design && 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 "tech-design" agent skill from https://github.com/open-octo/octo-agent/tree/main/internal/skills/defaults/tech-design into .github/skills/tech-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tech-design", 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 open-octo/octo-agent --skill tech-design -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install open-octo/octo-agent tech-design --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-octo/octo-agent.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/internal/skills/defaults/tech-design .opencode/skills/tech-design && 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 "tech-design" agent skill from https://github.com/open-octo/octo-agent/tree/main/internal/skills/defaults/tech-design into .opencode/skills/tech-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tech-design", 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.
tech-designProduce a complete backend technical design document from a PRD or feature description — understand, explore the codebase, grill on decisions, write, and self-review.
Tech Design is an agent skill from open-octo/octo-agent. Produce a complete backend technical design document from a PRD or feature description — understand, explore the codebase, grill on decisions, write, and self-review. Use when the user wants to write a tech design, technical proposal, or backend design doc, e.g. "写技术方案", "出个设计文档", "tech design", "technical proposal", "帮我写后端设计". For pressure-testing decisions first, use the grill-me skill; to build from a finished design, use the implement skill.
Its SKILL.md is about 3.3k 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 Product & Project Management, covering PRD writing, Requirements gathering and Architecture decision records. The repository describes itself as: Open-source, single-binary, self-hosted AI agent — your models and data stay on your machine. A coding agent on par with Claude Code and a personal assistant lighter than… The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit fc1385f. 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.
Shell commands in SKILL.md call:
goFrom 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.
Tech Design loads about 3.3k tokens when it runs. Until then it costs about 115 tokens; SKILL.md has 1,868 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 open-octo/octo-agent at commit fc1385f, republished under its MIT licence (© open-octo). 1,868 words, ~3,325 tokens.
.claude/skills/tech-design/SKILL.md (or your agent's skills folder).Take a PRD (or feature description) and produce a complete backend technical design document through a structured process: understand → explore → grill → write → self-review.
These six rules run through the whole process. Follow them while writing (Phase 4), then grep for violations in the self-review. Most rework on a design doc traces back to breaking one of them.
Every concrete technical name must be grepped from real code, looked up in
docs, or asked of the user — never a plausible-sounding placeholder left for
review to fix. Inventing svc.GetBookingNotes when no such method exists, or
guessing a column is matter_type when it's really ticket_type, is the single
most common source of production bugs that pass mocked tests.
The design scope is strictly equal to the PRD scope. There are only two legal sources of phasing: (a) the PRD itself marks priority (P1/P2 in the stories), or (b) the user explicitly said "do X first, not Y" during grilling. Otherwise, if the PRD lists N sub-scenarios, design N.
Do not use P1/P2/P3 (or Phase 1/2/3) prefixes to label features, sections,
or upstream links — even as "neutral numbering". A P-prefix is always read as
priority/phasing and manufactures an ordering the PRD never stated. Use the PRD's
own section names instead. Real execution order belongs only in a "release order"
section, and only when driven by a dependency chain, not by scope-cutting.
Every concrete technical claim (DB column, URL prefix, field, API signature, enum
value, cache key pattern, MQ topic) must come from one of: a code location
(file:line), project docs, or a grill answer (quote the decision). Can't
find a source → ask the user (they're online; asking is cheap). Never paper
over a gap with a TODO.
Decision-level choices (sync vs async, new table vs extend column) can rest on a grill answer plus explicit trade-off reasoning — but factual assertions must be greppable.
High-guess areas (grilling usually misses these; handle by "check docs → check code → ask user"): compatibility design, security design, circuit-breaker thresholds, rollback plan, external dependency interface tables.
Write for a future reader who wasn't in this conversation. Banned phrases:
grill-question references (the Q3 decision, per the original Q3), grill-option
letters (go with option A, path A — the reader has no idea what A was; inline
the actual content instead), conversation references (after we discussed…,
the earlier path), and editing-process narration (revised plan, originally we…).
Replace with the direct technical reason: "We use X rather than Y because … (name the actual X and Y, never bare option letters)."
Also context-bound: undefined jargon. Any domain term or coined abbreviation must be defined on first use or in a glossary. Test: would someone who only reads this doc, wasn't in the conversation, and isn't deep in this domain know what the word means? If not, define it.
Exception: a version-history changelog may say "X changed to Y", but must not reference a grill question.
A concrete example ("service X runs on cluster Y", "call chain A→B→C", "this field is usually N") must be grepped / measured / confirmed from logs. Ask "can I reproduce this example?" — if not, don't write it. An honest "needs verification" beats a wrong example that a later reader treats as truth. An old default config existing ≠ the current fact being correct; infrastructure migrates.
The finished design must be accurate and complete: an implementer builds from it without discovering that a decision was left open. A "待实现阶段确认 / to be confirmed during implementation / TBD" item is a design defect, not a legal hand-off — it is exactly the gap this skill exists to close. Every uncertainty you hit while writing (Phase 4) or in self-review (Phase 5) must be closed before the doc is done. There are two kinds, and each has one correct way to close it:
If you catch yourself writing an "open questions" / "实现阶段需确认" list that shifts a decision downstream: stop. Check the code, or grill the user, then write the answer. The only thing that may remain unresolved is something genuinely outside the design's control (e.g. an upstream team owes a field that does not exist yet) — and that is recorded as a blocking external dependency with an owner, not as a decision the implementer is expected to make.
The user provides one of: a doc URL containing the PRD, a local file path, or a prose description. If a URL is given, fetch and read it first.
Read the PRD thoroughly. Extract: problem statement (what pain is solved), core user flow (the happy path end-to-end), scope boundaries (explicitly in/out), success metrics. Summarize back to the user in 5-8 bullets and ask: "Did I get this right? Anything missing?"
Identify which existing services, modules, and data models are involved. Explore to understand current architecture and boundaries, existing schemas that will be touched, APIs to modify or depend on, relevant MQ topics / cache keys / cron jobs, and prior art — similar features already implemented that can inform the design. Use codegraph if indexed, otherwise search directly. Report key findings concisely (module names, key files, current behavior).
The general decision tree (architecture / data / API / MQ / config / rollout) is resolved by a prior grill-me session, and those decisions are already in context — do not re-grill here. This step only fills the concrete items a document needs but grilling usually misses — exactly the R3 high-guess areas:
file:line plus verbatim field names (with serialization tags)Handle in R3 order — check docs → check code → ask user. Read from code what you can (upstream fields, URL prefixes); ask the user only for what's neither in code nor docs, one question at a time. When gaps are filled, confirm: "Decisions and the facts needed to write are all in — ready to write?"
Structure to the change, not a fixed template. A project-level design (new feature/service/flow, multi-service, needs an architecture diagram and grayscale rollout) covers the full skeleton below. A small iteration (a field added, a branch extended, single service, architecture unchanged) keeps only the sections that actually change and drops the rest.
Typical skeleton:
flowchart TB when the flow is non-trivialsequenceDiagram per flow, not
one giant diagram; skip for pure field additionsEmpty sections: in a project-level design, keep the section and write "N/A — [why]" so a reviewer sees each sanity-check area was considered; in a small iteration, delete sections that don't change. The compatibility section is the exception — always spell out why it's not affected, item by item, never a bare "N/A"; it's the most-missed area in self-review.
Style: tables over paragraphs; concrete over abstract — real key formats, real SQL, real JSON, every cache key / MQ topic / API endpoint / DB column named, no hand-waving. Write in the user's language; keep code, field names, and types in their original form.
The external-dependency table is the worst offender for R1 + R3. Every
HTTP/RPC/MQ upstream call gets a row: canonical file path + line range + verbatim
fields (with serialization tags). Do not write prose like "reads status /
type / amount" — an implementer seeing a prose field name will guess the tag
(status → json:"status" or json:"status_text"?), and one wrong character is
a production bug that fake-client unit tests never catch. Filling this table with
verbatim fields at design time is the only place that prevents the whole class.
Before showing the user, grep for rule violations:
| Rule | Check | Fix |
|---|---|---|
| R1 | Every API name / DB column / enum / URL has a file:line or doc source | Grep real code to verify; ask the user if not found — no plausible placeholders |
| R2 | grep -E 'P1|P2|P3|Phase|阶段' — any hit is suspect phasing | Can it point back to a PRD priority or an explicit "do X first" decision? If not, remove it and restore full-PRD scope. Even if it can, drop the P/Phase prefix and use the PRD's section name |
| R3 | grep -E '通常|一般|应该是|usually|should be|probably|likely' | Stop & verify: add file:line / doc reference, or ask the user — no TODO fallback |
| R4 | grep -E 'Q\d+|grill|option [ABCD]|方案 ?[ABCD]|走 ?[ABCD] ?路' | Rewrite as a direct technical statement; replace bare option letters with their actual content. Changelog is exempt |
| R4-jargon | List domain jargon / coined abbreviations; confirm each is defined in the glossary or on first use | Define the undefined ones |
| R5 | Every concrete example (service/cluster/field value/call chain) is empirical | Can't reproduce → change to "needs verification" or delete |
| R6 | grep -E '实现阶段|待实现|待确认|to be confirmed|during implementation|open question' — any hit is a deferred decision | Close it before hand-off: a code-checkable fact → read the code; a genuine decision → re-enter grill-me and ask the user. Only a real external blocker may remain, recorded with an owner |
| Completeness | grep -E 'TBD|TODO|待定'; empty tables, placeholders | Every cache key / MQ topic / API endpoint / DB column must be concrete |
| Consistency | Sequence-diagram field names vs API response fields vs DB columns aligned? MQ topic name producer == consumer? | Rename to align |
Fix issues in place, including every R6 deferral: close each one before you present the draft — a code-checkable fact by reading the code, a genuine decision by re-entering grill-me to resolve it with the user. The draft you hand off carries no "confirm during implementation" items; the only thing that may remain is a real external blocker, recorded with an owner. Present the draft, iterate on feedback until approved.
Write the final document to the location the user specifies (default:
tech-design.md in the current directory). Once approved, the natural next step
is the implement skill, which builds from the design slice by slice.
© open-octo, 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 internal/skills/defaults/tech-design of open-octo/octo-agent.
Open the folder on GitHubat commit fc1385f
Tech Design 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 |
|---|---|---|---|---|---|---|
| Tech Design this skillopen-octo/octo-agent | 125 | — | ~3.3k | Automated safety check: Pass | MIT | |
| Foreman Grill DocsVisionForge-OU/foreman | 443 | — | ~1.6k | Automated safety check: Pass | Custom licence | |
| Ouroboros PM InterviewQ00/ouroboros | 6.2k | 1 repos | ~5.7k | Automated safety check: Pass | MIT | |
| User Alignment and Agent-Ready PRDstryproduck/produck-skills | 510 | — | ~5.3k | Automated safety check: Pass | Apache-2.0 | |
| Ad Handoffalexandremendoncaalvaro/CorridorKey-Runtime | 755 | 1 repos | ~4.2k | Automated safety check: Notes | Custom licence | |
| Creating Issuesopsmill/infrahub | 531 | — | ~1.2k | Automated safety check: Pass | Apache-2.0 |
VisionForge-OU/foreman
Headless grilling pass that challenges an approved implementation plan against the existing codebase and domain model, then writes an ADR draft and a PRD draft into the Foreman feature directory.
Q00/ouroboros
Runs a guided product-manager interview that classifies each question automatically and produces a Product Requirements Document.
tryproduck/produck-skills
Turns a vague feature request into a written spec with scope, phases, acceptance criteria and do-not-do limits that a coding agent can follow without guessing.
alexandremendoncaalvaro/CorridorKey-Runtime
Compact the current session into a handoff document a fresh agent can pick up from.
opsmill/infrahub
Turns a single feature idea, improvement, or bug into ONE well-structured GitHub issue.
opsmill/infrahub
Stress-tests a fuzzy or vague feature idea before any PRD, spec, or ticket is written.
open-octo/octo-agent
Acquire images as files — generate them with an AI image model (14 providers: OpenAI/gpt-image, Gemini, Qwen, Zhipu, Volcengine, Stability, FLUX, Ideogram, MiniMax, and more), search openly-licensed…
open-octo/octo-agent
Create, read, and edit Excel (.xlsx) spreadsheets programmatically with openpyxl — cell values, formulas, styling (fonts/fills/borders/alignment/number formats), merged cells, multiple sheets…
open-octo/octo-agent
Design guidance for any HTML/Markdown file shown in octo's Artifacts panel — reports, dashboards, architecture/system diagrams, generated UIs, slide-style pages, 3D scenes.
open-octo/octo-agent
Review local code changes. An agent skill from open-octo/octo-agent.
open-octo/octo-agent
AI-driven multi-format SVG content generation system. An agent skill from open-octo/octo-agent.
open-octo/octo-agent
Configure octo's global settings through guided conversation — set up AI model endpoints (providers, API keys, models), adjust agent defaults (reasoning effort, permission mode, coauthor, workspace…
Produce a complete backend technical design document from a PRD or feature description — understand, explore the codebase, grill on decisions, write, and self-review. Tech Design is an agent skill from open-octo/octo-agent. Produce a complete backend technical design document from a PRD or feature description — understand, explore the codebase, grill on decisions, write, and self-review.
Tech Design fits situations like: the user wants to write a tech design; technical proposal; backend design doc.
Run `npx skills add open-octo/octo-agent --skill tech-design -a claude-code`. Or copy the skill folder (internal/skills/defaults/tech-design in open-octo/octo-agent) into .claude/skills/tech-design in your project. Claude Code loads it when a task matches its description.
Run `npx skills add open-octo/octo-agent --skill tech-design -a codex`. Or copy the skill folder (internal/skills/defaults/tech-design in open-octo/octo-agent) into .agents/skills/tech-design 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 open-octo/octo-agent --skill tech-design -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/tech-design, .gemini/skills/tech-design, .github/skills/tech-design and .opencode/skills/tech-design in your project.
Going by SKILL.md and its folder, Tech Design needs the command-line tools its instructions call (go).
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.
Tech Design is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.3k tokens (SKILL.md is roughly 13k 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 Tech Design: Foreman Grill Docs (VisionForge-OU/foreman, 443 stars), Ouroboros PM Interview (Q00/ouroboros, 6.2k stars), User Alignment and Agent-Ready PRDs (tryproduck/produck-skills, 510 stars) and Ad Handoff (alexandremendoncaalvaro/CorridorKey-Runtime, 755 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
open-octo (a GitHub organization) maintains it in open-octo/octo-agent, which has 125 GitHub stars. The repository holds 40 skills in this directory. The repository was last updated on October 8, 2026.
Source: open-octo/octo-agent on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.