Creates automation specifications from requirements. Use when defining new automations, documenting workflows, converting discussions to specs, or planning client automations. Generates Mermaid flow diagrams, API references, edge cases, and test definitions.
Resources
2Install
npx skillscat add 011matthias/agentic-ops1-01/spec-creator Install via the SkillsCat registry.
Spec Creator
Creates comprehensive specifications following the Agentic Ops standard format. Supports all work item types (automation, app, backend, project) and all orchestrators (n8n, Make.com, Trigger.dev, FastAPI).
Quick Start
- Determine work item type (Step 0)
- Detect orchestrator and gather requirements
- Generate Mermaid diagram following
modules/MERMAID-PATTERNS.md - Add edge cases from
modules/EDGE-CASES.md - Define tests using
modules/TESTING-SECTION.md - Use type-specific module for extra sections (n8n, Make.com, app, backend, or project)
- Save to
workspace/clients/{client}/specs/1-spec/{id}.md
Process
Step 0: Determine Work Item Type
Ask the user what they are building:
| Type | ID Pattern | When to Use |
|---|---|---|
automation |
a{N} |
Background job, cron task, webhook handler, n8n workflow |
sub-automation |
a{N}.{M} |
Child of an existing automation (e.g., a6.1, a6.2) |
app |
app{N} |
Frontend, dashboard, web UI |
backend |
be{N} |
Backend API, DB migration, infrastructure service |
project |
p{N} |
Multi-phase project container (2+ independently-trackable phases) |
phase |
p{N}.{M} |
A single phase within an existing project |
bug-fix |
fix{N} |
A tracked fix for a specific existing automation or work item |
The type determines the ID prefix, which sections to include, and which module to use.
If type is bug-fix: follow the abbreviated process in Step 0B instead of Steps 1–7.
Step 0B: Bug-Fix Abbreviated Process
Use this instead of Steps 1–7 when type is bug-fix.
Gather from user:
- Which automation is broken? (get the ID, e.g.,
a2) - What is the symptom / what's failing?
- Is the root cause known yet?
Determine ID and filename:
- Scan all stage folders (
1-spec/,2-build/,3-test/,4-live/) for existingfix{N}files - Assign next available
fix{N}(e.g.,fix1,fix2) - Filename convention:
fix{N}-{parentId}-{short-description}.md- Example:
fix1-a2-order-sync-crash.md - This makes the link visible from the folder listing without opening the file
- Example:
Create the spec:
- Use
workspace/templates/specs/bug-fix-spec.md(notautomation-spec.md) - Set
parent: a{N}to the automation being fixed - Set
orchestratorto match the parent automation's orchestrator - Save to
workspace/clients/{client}/specs/1-spec/fix{N}-{parentId}-{description}.md
Update the parent spec:
- Open the parent automation spec (e.g.,
a2-crm-erp-sync.md) - Set
needs_fixes: truein its frontmatter - Add to
last_changes:"Opened fix1: {short description}"
Update the README:
- Add the fix to the "Open Bug Fixes" section in
workspace/clients/{client}/specs/README.md
Report to user:
- Fix spec location and ID
- Parent spec updated (
needs_fixes: true) - Next steps: investigate root cause, update "Root Cause" section, then implement
Step 1: Detect Orchestrator & Gather Requirements
- For automation/sub-automation: detect orchestrator (before asking questions):
- Check for
trigger.config.tsin automations → Trigger.dev - Check for
railway.tomlin automations → FastAPI - Check
.mcp.jsonforn8n-{client}entry → n8n - Check
infrastructure.yamlfortype: makeentry → Make.com
- Check for
- For app/backend/project/phase: orchestrator =
none(skip detection) - Load
prompts/gather-requirements.md - Ask core questions (all types)
- If n8n: ask n8n-specific questions (new vs update, visual verification, phased approach)
- If Make.com: ask Make.com-specific questions (new vs existing scenario, org/team, visual verification)
Step 2: Identify Client and ID
Determine:
- Client name: Check
workspace/clients/folder or ask user - ID: Next available ID based on type — scan all stage folders (
1-spec/,2-build/,3-test/,4-live/) across the client to find the highest existing number:- Automation:
a{N} - Sub-automation:
a{N}.{M}(determined by parent automation) - App:
app{N} - Backend:
be{N} - Project:
p{N} - Phase:
p{N}.{M}(determined by parent project) - Bug-fix:
fix{N}(scan for existingfix*.mdfiles across all stage folders)
- Automation:
- Name: Descriptive name from problem statement
Step 3: Fetch API Docs (Mandatory for HTTP-based integrations)
This step must be completed BEFORE writing endpoints into the spec.
Wrong endpoints in specs lead directly to broken n8n HTTP nodes, Make.com HTTP modules, and incorrect API clients.
For automation/sub-automation (n8n or Make.com):
- Check if native nodes/app modules exist for each system (n8n: use
search_nodes; Make.com: check the Make.com app directory) - If native nodes/modules exist: Note which ones to use (e.g., Slack, Google Sheets) — no HTTP docs needed
- If HTTP Request/HTTP modules are needed for a system:
- Check if
workspace/api-docs/{system}/already exists with afull-documentation.md - If missing: invoke the api-docs-fetcher immediately (do not proceed with spec until done):
uv run .claude/skills/api-docs-fetcher/scripts/fetch_docs.py \ --url "{api_docs_base_url}" \ --service {system_name} - Ask the user for the API docs URL if unknown
- After fetching: scan
workspace/api-docs/{system}/full-documentation.mdfor the exact endpoints needed - Use only verified endpoint paths from the docs in the API References table
- Check if
For automation/sub-automation (code-based — Trigger.dev / FastAPI):
- Check if
workspace/api-docs/{system}/exists - If exists: Review
full-documentation.mdfor relevant endpoints - If missing: invoke the api-docs-fetcher before writing any endpoint paths in the spec:
uv run .claude/skills/api-docs-fetcher/scripts/fetch_docs.py \ --url "{api_docs_base_url}" \ --service {system_name} - Use verified endpoint paths from fetched docs (or ask user if no docs URL available)
For app/backend:
- Check if existing API clients exist in
automations/python/clients/orautomations/app/clients/ - Note tech stack and existing patterns
Rule: Never invent or guess API endpoint paths. If docs don't exist and can't be fetched, explicitly mark endpoints in the spec as
⚠️ VERIFYand note they must be confirmed before implementation.
Step 4: Design Flow
For code-based automation (Trigger.dev / FastAPI):
Using the 5-step pattern (Initialize → Fetch → Transform → Execute → Finalize):
- Map user's workflow to the 5 steps
- Generate Mermaid diagram per
modules/MERMAID-PATTERNS.md(code-based section) - Identify decision points and branches
- Note any loops or conditional flows
For n8n automation:
Using node-based patterns:
- Map user's workflow to n8n nodes (Trigger → HTTP Request / Native Node → Code → Action)
- Generate Mermaid diagram per
modules/MERMAID-PATTERNS.md(n8n section) - Show node types and operations in diagram (e.g., "GET /orders", "Code: Transform")
- Note IF/Switch branching, pagination, and error handling
For Make.com automation:
Using module-based patterns:
- Map user's workflow to Make.com modules (Trigger module → App/HTTP modules → Router → Action)
- Generate Mermaid diagram per
modules/MERMAID-PATTERNS.md(Make.com section) - Show module types and apps in diagram (e.g., "Fortnox: List orders", "Router", "Slack: Post message")
- Note Router branching, Iterator/Aggregator patterns, and error handler routes
For app:
Using modules/APP-SECTIONS.md:
- Map user flows (pages, interactions)
- Define tech stack and component structure
- Generate user flow diagram
For backend:
Using modules/BACKEND-SECTIONS.md:
- Map API endpoints and database schema
- Define auth and deployment model
For project/phase:
Using modules/PROJECT-SECTIONS.md:
- List phases and dependencies
- Define success criteria per phase
Step 5: Define Edge Cases
Based on systems involved, add edge cases from modules/EDGE-CASES.md:
All types:
- API-specific errors (rate limits, auth, timeouts)
- Data validation scenarios
- Duplicate handling
Additional for n8n:
- n8n-specific edge cases (Continue On Fail, node retry, credential refresh)
Additional for Make.com:
- Make.com-specific edge cases (error handlers, connection refresh, incomplete executions)
Skip for project/phase: (no code = no edge cases)
Step 6: Create Testing Section
For code-based automation (Trigger.dev / FastAPI):
Using modules/TESTING-SECTION.md:
- Define unit tests for transform logic
- Define integration tests (dry-run, sandbox)
- Extract acceptance criteria from user's requirements
For n8n:
Using modules/TESTING-SECTION.md (n8n section) and modules/N8N-SECTIONS.md:
- Define manual testing steps in n8n UI (Limit nodes, disable write nodes)
- Define visual verification steps in target systems
- Define idempotency test (re-run creates no duplicates)
- Extract acceptance criteria (verifiable through UI inspection)
For Make.com:
Using modules/TESTING-SECTION.md (Make.com section) and modules/MAKE-SECTIONS.md:
- Define manual testing steps (Run once, inspect module bubbles)
- Define visual verification steps in target systems
- Define idempotency test (re-run creates no duplicates)
- Extract acceptance criteria (verifiable through execution inspector and target system UIs)
For app/backend:
Using modules/APP-SECTIONS.md or modules/BACKEND-SECTIONS.md:
- Define manual QA steps
- Define integration test scenarios
For project/phase: (keep it high-level; individual phases have their own specs)
Step 7: Generate Spec File
Use template at workspace/templates/specs/automation-spec.md:
For automation (code-based):
- Fill in frontmatter:
type: automation,id: a{N},orchestrator,trigger,systems - Complete each section using code-based patterns
- Save to
workspace/clients/{client}/specs/1-spec/{id}.md
For automation (n8n):
- Fill in frontmatter with
orchestrator: n8n - Use n8n section templates from
modules/N8N-SECTIONS.md:- Add N8N Workflow section (workflow info, credentials, node types)
- Use Manual Testing section instead of pytest
- Add Visual Verification section
- Use n8n Implementation Notes format
- Save to
workspace/clients/{client}/specs/1-spec/{id}.md
For automation (Make.com):
- Fill in frontmatter with
orchestrator: make - Use Make.com section templates from
modules/MAKE-SECTIONS.md:- Add Make.com Scenario section (scenario info, connections, module types)
- Use Manual Testing in Make.com section instead of pytest
- Add Visual Verification section
- Use Make.com Implementation Notes format
- Save to
workspace/clients/{client}/specs/1-spec/{id}.md
For app:
- Fill in frontmatter:
type: app,id: app{N},orchestrator: none - Use
modules/APP-SECTIONS.mdsections - Save to
workspace/clients/{client}/specs/1-spec/{id}.md
For backend:
- Fill in frontmatter:
type: backend,id: be{N},orchestrator: none - Use
modules/BACKEND-SECTIONS.mdsections - Save to
workspace/clients/{client}/specs/1-spec/{id}.md
For project:
- Fill in frontmatter:
type: project,id: p{N},orchestrator: none - Use
modules/PROJECT-SECTIONS.md(phases list, goals, milestones) - Save to
workspace/clients/{client}/specs/1-spec/{id}.md
Ensure workspace/clients/{client}/specs/1-spec/ folder exists (create if needed).
Output
workspace/clients/{client}/specs/1-spec/{id}.mdAfter Creating Spec
Report to user:
- Spec location and ID assigned
- Type and orchestrator used
- Next steps: Build the workflow (n8n) or scenario (Make.com) or implement (code-based) or start development (app/backend)
- Testing: Manual testing in n8n UI or Make.com / testing-agent for code-based / QA for app/backend
Modules
| Module | Purpose |
|---|---|
| MERMAID-PATTERNS.md | Flow diagram templates (code-based + n8n + Make.com) |
| EDGE-CASES.md | Common error scenarios by system + n8n/Make.com-specific |
| TESTING-SECTION.md | Test structure templates (pytest + n8n/Make.com manual) |
| N8N-SECTIONS.md | n8n-specific spec section templates |
| MAKE-SECTIONS.md | Make.com-specific spec section templates |
| APP-SECTIONS.md | App/frontend spec section templates |
| BACKEND-SECTIONS.md | Backend service spec section templates |
| PROJECT-SECTIONS.md | Project container spec template |