arsenal · diff
git:20260823.ba33ab1 to v1.2.0
52 added, 54 removed. Audit A to A.
---
name: arsenal
- description: Clarify a fuzzy project idea into a phased roadmap through a Socratic interview. Asks what the objective really is, one question at a time, researches how others solved it (Exa), then writes docs/roadmap/<slug>/roadmap.md and opens it as a styled HTML page with a wireframe mockup and copy-paste command blocks. Re-discussable in place; hands off to /brief or /ship. Triggers on "roadmap", "what should we build", "I have an idea but it's vague", "help me figure out the objective", "clarify this idea", "arsenal", "où on va avec ce projet", "je ne sais pas par où commencer". NOT brief (that specs a defined feature), NOT propose (that designs a decided change), NOT code-roadmap (that routes to skills).
- argument-hint: "<project idea> [-a auto] [-r resume <slug>]"
- allowed-tools:
- - AskUserQuestion
- - Read
- - Write
- - Edit
- - Glob
- - Grep
- - Bash
+ description: Clarify a fuzzy project idea into a phased roadmap through a Socratic interview, capability-aware research, and adversarial review. Use for roadmap discovery, product direction, or deciding what to build before brief, proposal, or implementation work.
+ compatibility: Python 3 is required only for HTML rendering. Network access and subagents are optional; the complete workflow has a solo fallback.
+ metadata:
+ version: "1.2.0"
---
<objective>
- Turn a vague idea into a clear, phased roadmap the user believes in. arsenal
- interviews first (the objective is the deliverable of the conversation, not
- an input), researches how existing products solved the same problem, then
- writes ONE durable artifact (roadmap.md) and renders it to an HTML page with
- a wireframe mockup and the exact commands to run per phase. The roadmap is
- upstream of everything: it feeds /brief (spec one feature) or /ship.
+ Turn a vague idea into a clear phased roadmap the user believes in. Interview
+ first, research existing solutions, draft the smallest useful sequence, review
+ it adversarially, and render one durable roadmap artifact.
</objective>
<parameters>
| Flag | Description |
|------|-------------|
- | `-a` / `--auto` | Skip the interview loop gates, infer from the idea (NOT recommended for truly vague ideas) |
- | `-r` / `--resume` | Reopen an existing docs/roadmap/<slug>/ for re-discussion |
+ | `-a` / `--auto` | Infer interview answers from the idea |
+ | `-r` / `--resume` | Reopen an existing roadmap for discussion |
+ | `--no-agents` | Force the complete solo workflow |
+ | `--install-omp-agents` | Explicitly install bundled OMP agents |
+ | `--install-codex-agents` | Explicitly install bundled Codex agents |
+ | `--uninstall-omp-agents` | Restore or remove installed OMP agents |
+ | `--uninstall-codex-agents` | Restore or remove installed Codex agents |
- Remainder of input = the project idea (free text) or the slug to resume.
+ The remaining input is the project idea or resume slug.
</parameters>
<state_variables>
| Variable | Type | Set by |
|----------|------|--------|
| `{idea}` | string | step-00-init |
| `{slug}` | string | step-00-init |
| `{auto_mode}` | boolean | step-00-init |
| `{resume_mode}` | boolean | step-00-init |
- | `{roadmap_dir}` | string | step-00-init (docs/roadmap/<slug>/) |
+ | `{force_solo}` | boolean | step-00-init |
+ | `{roadmap_dir}` | string | step-00-init |
+ | `{capabilities}` | object | step-00-init |
| `{answers}` | object | step-01-interview |
| `{research}` | array | step-02-research |
+ | `{execution_trace}` | array | steps 02 and 03 |
| `{stepsCompleted}` | array | every step |
</state_variables>
<delimitation>
- - `arsenal` != `brief`: brief specs ONE defined feature (stories, metrics,
- tasks). arsenal decides WHAT is worth building and in which order.
- - `arsenal` != `propose`: propose designs a decided technical change.
- - `arsenal` != `code-roadmap`: that one routes to skills; this one shapes
- the product objective itself.
- - Chain: `arsenal -> brief -> propose -> ship`. arsenal never implements.
+ - Arsenal decides what is worth building and in which order.
+ - It does not write a product brief, technical proposal, or implementation.
+ - The workflow hands off through semantic next actions. Harness adapters format
+ any concrete command shown to the user.
</delimitation>
<entry_point>
- **FIRST ACTION:** Load `steps/step-00-init.md`
+ **FIRST ACTION:** Load `steps/step-00-init.md`.
</entry_point>
<step_files>
| Step | File | Purpose |
|------|------|---------|
- | 00 | `steps/step-00-init.md` | Parse flags, slugify, detect resume |
- | 01 | `steps/step-01-interview.md` | Socratic interview: objective, users, minimal version, constraints |
- | 02 | `steps/step-02-research.md` | Exa research: how others solved it, cited |
- | 03 | `steps/step-03-plan.md` | Write roadmap.md: phases, commands, mockup |
- | 04 | `steps/step-04-render.md` | Render + open the HTML deliverable |
- | 05 | `steps/step-05-discuss.md` | Re-discussion loop; finalize; handoff |
+ | 00 | `steps/step-00-init.md` | Parse input and detect capabilities |
+ | 01 | `steps/step-01-interview.md` | Find the real objective |
+ | 02 | `steps/step-02-research.md` | Research through available capabilities |
+ | 03 | `steps/step-03-plan.md` | Draft and adversarially review the roadmap |
+ | 04 | `steps/step-04-render.md` | Render the HTML deliverable |
+ | 05 | `steps/step-05-discuss.md` | Re-discuss, finalize, and hand off |
</step_files>
<references>
- | File | Content |
- |------|---------|
- | `scripts/render.py` | Markdown -> styled HTML page (status banner, TOC, mermaid), opens in browser |
+ - `references/capability-contract.md`: probe and fallback contract.
+ - `references/agent-contracts.md`: bounded agent inputs and outputs.
+ - `references/adapters/`: harness-specific discovery and routing.
+ - `scripts/install_agents.py`: explicit OMP and Codex agent installation.
+ - `scripts/render.py`: offline, cross-platform HTML renderer.
</references>
<interaction>
- - Default is interactive: the interview IS the product. Never infer the
- objective without `-a`.
- - One question at a time in the interview; never a wall of questions.
- - Converse in the conversation language; the roadmap artifact is written in
- the conversation language too (frontmatter keys/values, slug and code
- identifiers stay English).
- - Never dump the raw markdown into chat: write the file, render the HTML,
- report one line.
+ - The interview is interactive unless `--auto` is present.
+ - Ask one plain-text question at a time.
+ - Use the conversation language for chat and the roadmap. Keep versioned
+ repository content, identifiers, commands, and frontmatter keys in English.
+ - The lead owns interpretation, scope, synthesis, roadmap writing, and final
+ discussion. Agents never question the user or write the roadmap.
</interaction>
<critical>
- - The interview digs for the REAL objective: ask non-obvious questions that
- surface assumptions, never feature checklists.
- - Research goes through Exa MCP only (no native WebSearch/WebFetch);
- every inspiration in the roadmap is cited with its URL.
- - The HTML render at finalize is MANDATORY: the page is the deliverable,
- raw markdown is storage.
- - The roadmap stays re-discussable: `-r <slug>` reopens the loop, edits the
- same artifact, re-renders. Never fork a second roadmap for the same idea.
- - arsenal writes docs/roadmap/<slug>/roadmap.md and NOTHING else in the
- repo. No code, no scaffolding.
+ - Resolve research, delegation, and rendering as semantic capabilities. Never
+ require a particular tool name in the portable core.
+ - Delegate only two or more independent, read-only units. Maximum fan-out is
+ three. Run the same contracts sequentially in the lead when delegation is
+ unavailable.
+ - Preserve the roadmap schema and resume behavior. Optional execution trace
+ metadata is additive.
+ - Never modify global user configuration automatically. Agent installation is
+ explicit and reversible.
+ - Rendering the HTML is mandatory. Opening a browser is optional.
+ - Write only `docs/roadmap/<slug>/roadmap.md` during a normal workflow.
</critical>