Ideas Lifecycle
The ideas lifecycle is intentionally lightweight compared to the project workflow.
Levels
Ideas can be stored at two levels:
- Project level (default) —
.oat/ideas/in the current project, gitignored - User level (global) —
~/.oat/ideas/in the home directory, for ideas not tied to a specific project
All idea skills accept a --global flag to operate at user level. Without the flag, skills auto-detect the level by checking for an active idea pointer or existing ideas directory at each level.
Each level has its own independent backlog, scratchpad, and active-idea config value.
Flow
Start in the home that matches how formed the thought is. Every home is a fine place to stop. Dashed arrows are optional moves.
Where to start:
- Unsure:
oat-brainstorm. It can end as an inline answer or a document, or hand off to an idea, a backlog item, or one or more projects. - A one-line seed:
oat-idea-scratchpad. - Worth exploring:
oat-idea-new.oat-idea-ideateresumes an idea, can start one from a scratchpad seed, and can reopen a summarized idea. - Scoped work for later:
oat-pjm-add-backlog-item(needsoat pjm init). - Ready to build:
oat-project-lite,oat-project-brief,oat-project-goal,oat-project-quick-start,oat-project-new, oroat-project-import-planfor a plan written elsewhere.
Optional moves:
- Seed to idea:
oat-idea-new. - Idea to summarized idea:
oat-idea-summarize. - Summarized idea to project: the documented route is
oat-project-newand thenoat-project-discover, withsummary.mdas the request. That is a spec-driven project. - Backlog item to project: start any project skill and give it the item (or
its kickoff handoff) as context. Archive the item with
oat backlog archivewhen the work ships. - Split into parent and child projects: from spec-driven discovery
(
oat-project-discover), or directly fromoat-brainstorm.
Good to know:
- Moving on leaves the earlier record in place. It is archived, not moved.
- The paths shown are project-level defaults. With
--global, ideas live in~/.oat/ideas/. Ideas are local and usually gitignored. - The ideas backlog (
backlog.mdinside the ideas folder) is an index of ideas. It is not the repository backlog under.oat/repo/pjm/backlog/. - Backlog items are committed to the repository. Projects are committed (shared scope), pushed to a project ref (synced scope, the default on a fresh install), or kept on your machine (local scope).
Backlog items need project management (PJM, OAT's file-backed backlog,
roadmap, and decision records) adopted with oat pjm init. Run it once.
- Quick capture:
oat-idea-scratchpadto review or capture idea seeds - Start brainstorming:
oat-idea-new(scaffolds directory, then invokesoat-idea-ideate) - Resume brainstorming:
oat-idea-ideate(multiple sessions over time) - Finalize:
oat-idea-summarize(generates summary, updates backlog)
Relationship to oat-brainstorm
The always-on oat-brainstorm skill (in the brainstorm tool pack) can feed into this workflow. When a brainstorming conversation converges on an ideas-pack destination, the dispatcher follows the same flow above and seeds it with the brainstorming session content:
- Capture as new idea — runs
oat-idea-newSteps 3-7 inline and pre-fills the new idea'sdiscovery.mdfrom the brainstorming payload (What's the Idea?from the synthesized summary + motivation,What Would It Look Like?from the vision,Open Questionsfrom the conversation, plus a first session underNotes & Discussionheaded### Session: YYYY-MM-DD (seeded from oat-brainstorm)). The dispatcher then optionally chains intooat-idea-ideateStep 4 to keep brainstorming inside the idea, or stops with the session captured. - Extend existing idea — jumps straight to
oat-idea-ideateStep 4 (Start New Session) on the chosen idea path and appends the brainstorming transcript as a new session underNotes & Discussion. - Summarize directly — fast path that runs the capture flow silently and then invokes
oat-idea-summarizeend-to-end, producing both the idea record and the summary in one shot. Only offered when the brainstorming conversation produced enough material to summarize directly.
oat-brainstorm sets activeIdea automatically when its destination lands in this workflow. If the brainstorming conversation converges on a non-ideas destination instead (scoped backlog item, new project, doc-to-path, inline), oat-brainstorm does not touch ideas — see Tool Packs for the full brainstorm pack reference.
Directory structure
# Project level
.oat/ideas/
├── backlog.md # Aggregated list of all ideas
├── scratchpad.md # Quick-capture pad for idea seeds
└── {idea-name}/
├── discovery.md # Brainstorming document
└── summary.md # Generated when finalized
# User level (global) — same structure
~/.oat/ideas/
├── backlog.md
├── scratchpad.md
└── {idea-name}/
├── discovery.md
└── summary.mdState model
Ideas track two states in discovery.md frontmatter:
brainstorming— actively being exploredsummarized— finalized with a summary document
No state.md per idea. No HiLL gates. No knowledge base dependency.
Active idea
Each level stores the active idea in its config file:
- Project level:
activeIdeain.oat/config.local.json(gitignored) - User level:
activeIdeain~/.oat/config.json
Read/write via CLI: oat config get activeIdea / oat config set activeIdea <path>.
Ideas and projects use separate config keys and do not interfere with each other.
Scratchpad
The scratchpad is a checklist for capturing idea seeds quickly. Each entry supports nested bullets for quick notes:
- [ ] **{idea name}** - {brief summary} _(YYYY-MM-DD)_
- {quick note}
- {another note}Use oat-idea-scratchpad to review entries or quick-capture new ones. When oat-idea-ideate runs without an active idea, it also shows scratchpad entries alongside existing ideas. Selecting a scratchpad entry scaffolds the idea inline.
Backlog
The backlog (backlog.md) aggregates all ideas in three sections:
- Active Brainstorming — ideas currently being explored
- Captured Ideas — summarized and ready for future consideration
- Archived — completed, abandoned, or promoted to projects
Promotion to project
To promote a summarized idea to a Spec-Driven OAT project:
- Run the
oat-project-newskill with the idea name to scaffold the project - Run the
oat-project-discoverskill and use the idea'ssummary.mdas the initial request - Update the ideas backlog entry to Archived with reason: promoted to project
If the work hasn't been summarized as an idea yet — or never was an idea to begin with — oat-brainstorm's "promote to a new OAT project" destination is a parallel route. The brainstorm dispatcher scaffolds the project via oat project new <slug> --mode <mode>, writes the seeded discovery.md directly from the brainstorming payload (Initial Request, Solution Space with approaches considered, Chosen Direction, Key Decisions, Open Questions), and stops with a pointer to oat-project-quick-start or oat-project-design. It deliberately writes discovery.md only — never a partial design.md — so the design phase keeps its full collaborative cadence.
Initialization
The ideas directory is created automatically by oat-idea-new or oat-idea-scratchpad on first use. Future: oat init ideas will scaffold the directory and copy idea skills into the project.
Reference artifacts
{IDEAS_ROOT}/backlog.md{IDEAS_ROOT}/scratchpad.md{IDEAS_ROOT}/{idea-name}/discovery.md{IDEAS_ROOT}/{idea-name}/summary.md.oat/templates/ideas/
oat-idea-scratchpad
Invocation: /oat-idea-scratchpad capture or
/oat-idea-scratchpad review; add --global for the user-level scratchpad.
These are agent instructions, not shell commands. Codex uses
$oat-idea-scratchpad, or you can ask for the skill by name; the same
convention applies to the other idea skills below.
Prerequisites: A chosen ideas level. Capture needs the idea templates
the first time it creates the scratchpad; review does not. Neither an active
idea nor an OAT project is required. Without --global,
the skill resolves existing idea pointers/directories and asks when the
destination is ambiguous; repository-level ideas do not mean an active
project is required.
Example scenario: During a support review, you notice that upload failures might be easier to recover if customers could keep a recovery token. Capture the seed and one or two observations now without stopping the review to design a feature. In a later review session, inspect the unchecked seeds and choose which one deserves exploration.
Expected output: Capture adds a named, dated checklist entry with the
required one-line summary and any supplied notes to
{IDEAS_ROOT}/scratchpad.md, initializing the scratchpad/backlog from
templates on first use. Review reads the existing seeds instead. A captured
seed is not a project, formal requirement, or implementation commitment.
What it does without asking: Capture creates the ideas directory if it
is missing, copies the scratchpad and ideas-backlog templates when those
files do not exist yet, and appends your entry to scratchpad.md. Review
only reads. Neither mode commits anything or starts another skill.
Next step: Capture and review suggest starting a seed with oat-idea-new; they do not launch brainstorming themselves. You can also pick an unchecked seed later when oat-idea-ideate runs without an active idea.
oat-idea-new
Invocation: /oat-idea-new upload-recovery, with optional --global.
Supply a new idea name, or answer the naming question. Confirm the ideas
level if both repository and user stores are possible.
Prerequisites: Installed ideas templates and the chained
oat-idea-ideate skill, plus a writable chosen ideas store. No existing
idea or active OAT project is required. A name collision is not permission
to overwrite an existing discovery document.
Example scenario: You chose the upload-recovery seed for a longer conversation and want its notes to survive across sessions. Create a named idea rather than a project so the team can explore its value before committing to scope or implementation.
Expected output: {IDEAS_ROOT}/upload-recovery/discovery.md, an Active
Brainstorming backlog entry, and an activeIdea pointer to the new record.
The workflow initializes missing idea indexes, checks for a matching
scratchpad seed, verifies setup, then immediately starts the first
oat-idea-ideate session in the same conversation. The idea pointer is
separate from the active-project pointer.
What it does without asking: It creates the idea directory and
discovery.md, adds the Active Brainstorming entry to the ideas
backlog.md, creates the ideas backlog and scratchpad from templates if
they are missing, checks off a matching scratchpad seed, and sets
activeIdea (in .oat/config.local.json, or ~/.oat/config.json with
--global). It then starts the first ideate session itself, so you do not
need to invoke ideate to begin. It does not overwrite an existing idea or
commit anything.
Next step: Use oat-idea-ideate later to resume the idea in a new session. Keep uncertainty as questions rather than turning a freshly created template into an approved design.
oat-idea-ideate
Invocation: /oat-idea-ideate, with optional --global, to resume the
resolved idea or select an actual existing idea/scratchpad seed when
prompted. For an untracked, destinationless brainstorm, use oat-brainstorm
instead of inventing a scratchpad entry as the starting point.
Prerequisites: An existing tracked idea or an explicitly selected unchecked scratchpad seed. Selecting a seed uses the new-idea scaffolding steps before continuing. No active OAT project is required. If there are no ideas or seeds, the skill stops with capture/new-idea guidance.
Example scenario: After speaking with support, you have new questions about who would use a recovery token. Resume the upload-recovery idea, review the earlier notes, and explore the new observations without converting the session into architecture work or a task breakdown.
Expected output: A dated session in the idea's discovery.md, capturing
discussion, observations, and open questions. If the idea was already
summarized, choose explicitly whether to reopen brainstorming, view its
summary, or select a different idea. The exploratory mode does not write
code, a specification, or an implementation plan.
What it does without asking: It adds a dated session heading to
discovery.md, writes the conversation into that document as you talk, and
updates its last-updated date. When you pick an idea from the list, it sets
activeIdea to that idea. When you pick a scratchpad seed, it first creates
the idea the way oat-idea-new does (directory, discovery.md, backlog
entry, checked-off seed, and activeIdea). Reopening a summarized idea sets
its state back to brainstorming, but only after you choose that option. It
suggests summarizing at the end but does not start another skill.
Next step: Resume another session if the idea is still unclear, or use oat-idea-summarize when the discovery content is mature enough for a stable handoff.
oat-idea-summarize
Invocation: /oat-idea-summarize, optionally with --global, for the
resolved idea. Review the generated summary before accepting it.
Prerequisites: An idea with some explored discovery.md content, the
summary template, and the ideation skill for a return to brainstorming.
This skill needs an active idea, not an active OAT project. If no idea is
active, the skill lists your ideas and asks you to choose one. A nearly
empty discovery document gets a warning and an offer to brainstorm first,
not a refusal.
Example scenario: Several sessions established the recovery-token idea's audience, potential value, and main unknowns. Summarize those findings so the team can revisit the concept next month without rereading every session. Keep unresolved security and operational questions visible rather than presenting the concept as approved to build.
Expected output: A proposed summary.md synthesizing the idea's overview,
key points, value, possible effort, next steps, references, and open
questions. Acceptance changes discovery state to summarized and moves its
backlog entry to Captured Ideas. Refinement requires another review; choosing
continued brainstorming discards the proposed summary and does not finalize
state or backlog.
What it does without asking: If no idea was active, it sets activeIdea
to the one you choose. It writes the proposed summary.md into the idea's
folder before showing it to you for review. Only after you accept does it
set the discovery state to summarized and move the backlog entry. It
continues into an ideate session only when you choose to brainstorm more.
Otherwise it suggests next steps but does not create a project or start
another skill.
Next step: Keep the summarized idea for future prioritization or explicitly start a project using its summary as input. Summarization itself neither creates an OAT project nor authorizes implementation.