From Ottonomous
Guides users through creating product specifications via collaborative interview and web research. Supports listing, creating, and revising specs with codebase context.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ottonomous:spec list | revise {spec} | [product idea]list | revise {spec} | [product idea]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Argument:** $ARGUMENTS
Argument: $ARGUMENTS
| Command | Behavior |
|---|---|
spec list | List all specs with id, name, status, created date |
spec {idea} | Create new spec through collaborative interview |
spec revise {spec} | Save spec and go straight to review with codebase exploration |
If $ARGUMENTS is list:
.otto/specs/*.md | Name | ID | Status | Created |
|------|-----|--------|---------|
| Design Skill | design-skill-a1b2 | approved | 2026-01-28 |
spec {idea} to create one."If $ARGUMENTS starts with revise:
Spec Content: Everything after revise  in $ARGUMENTS
If no spec content provided, ask: "Provide the spec content to save. The first line should be the product name."
Parse the provided content:
Analyze codebase:
Map the provided content to this template structure (mark missing sections as [TBD]):
Product Requirements:
Technical Design:
Planning:
[TBD: reason]Generate unique ID from product name:
name=$(echo "$NAME" | head -1)
slug="${name,,}" # Convert to lowercase
slug="${slug// /-}" # Replace spaces with hyphens
slug="${slug:0:30}" # Truncate to 30 characters
hash=$(sha1sum <<< "$name$(date +%s%N)" 2>/dev/null || shasum <<< "$name$(date +%s%N)")
hash="${hash:0:4}"
id="${slug}-${hash}"
mkdir -p .otto/specs
Write to .otto/specs/{id}.md:
---
id: {id}
name: {Name}
status: draft
created_date: {YYYY-MM-DD}
description: {one-line summary of the spec}
---
{spec content mapped to template structure}
If any sections are marked [TBD] or contain ambiguous requirements:
Use an interactive prompt to resolve each ambiguity before proceeding to review. For each unclear item:
Skip this step if the spec is complete with no [TBD] markers.
Delegate to the technical-product-manager subagent (persona in agents/technical-product-manager.md):
Handoff to technical-product-manager:
.otto/specs/{id}.md{id}The subagent reads the spec, reviews for completeness, consistency, feasibility, ambiguity, and technical correctness. Returns prioritized findings (P0-P2) with specific sections, issues, and suggestions.
Wait for review to complete.
If no findings, skip to step 7.
For each finding (highest priority first):
After processing all findings, update the spec file with changes.
Output the full spec as rendered markdown so the user can review it inline.
Use an interactive prompt with options:
open .otto/specs/{id}.md, then ask againAfter each revision: Output the full updated spec as rendered markdown before asking for approval again. Revise until approved.
On approval, update status: draft to status: approved in the file.
Report: "Spec approved and saved to .otto/specs/{id}.md"
Offer task generation:
"Run
task {name}to generate implementation tasks."
Product Idea: $ARGUMENTS
If no argument provided, ask: "What would you like to build?"
Check for existing specs:
ls .otto/specs/*.md 2>/dev/null
Ask about reference projects:
"Are there any reference projects or examples I should look at for inspiration?"
If provided, explore the reference project(s) to understand their approach.
Analyze codebase:
Use web search/research to find and read:
For visual research (competitor products, reference implementations):
.otto/research/Use an interactive prompt to gather requirements. For each decision point:
Topics to cover:
Write a spec covering:
Product Requirements:
Technical Design:
Planning:
[TBD: reason]Generate unique ID from product idea:
slug="${ARGUMENTS,,}" # Convert to lowercase
slug="${slug// /-}" # Replace spaces with hyphens
slug="${slug:0:30}" # Truncate to 30 characters
hash=$(sha1sum <<< "$ARGUMENTS$(date +%s%N)" 2>/dev/null || shasum <<< "$ARGUMENTS$(date +%s%N)")
hash="${hash:0:4}"
id="${slug}-${hash}"
mkdir -p .otto/specs
Write to .otto/specs/{id}.md:
---
id: {id}
name: {Product Idea}
status: draft
created_date: {YYYY-MM-DD}
description: {one-line summary of the spec}
---
{spec content}
Delegate to the technical-product-manager subagent (persona in agents/technical-product-manager.md):
Handoff to technical-product-manager:
.otto/specs/{id}.md{id}The subagent reads the spec, reviews for completeness, consistency, feasibility, ambiguity, and technical correctness. Returns prioritized findings (P0-P2) with specific sections, issues, and suggestions.
Wait for review to complete.
If no findings, skip to step 8.
For each finding (highest priority first):
After processing all findings, update the spec file with changes.
Output the full spec as rendered markdown so the user can review it inline.
Use an interactive prompt with options:
open .otto/specs/{id}.md, then ask againAfter each revision: Output the full updated spec as rendered markdown before asking for approval again. Revise until approved.
On approval, update status: draft to status: approved in the file.
Report: "Spec approved and saved to .otto/specs/{id}.md"
Offer task generation:
"Run
task {name}to generate implementation tasks."
npx claudepluginhub brsbl/ottonomous --plugin ottonomousGenerates or refines a project spec from a free-form request, PRD, or reviewer findings. Produces an immutable contract for downstream agents.
Converts vague feature ideas into written, agreed specifications through structured questioning across nine dimensions. Produces docs/specs/*.md with acceptance criteria for planning, scaffolding, and TDD tools.