Workflows

Usage patterns for intake at different team and organization scales, from individual developers to multi-team enterprises with regulatory requirements.


Individual developer

Basic flow

Requirements → intake init → Review spec → Implement → intake verify → Iterate

End-to-end example

# 1. Gather requirements in a Markdown file
echo "# Auth System
- Users register with email and password
- OAuth2 login with Google and GitHub
- JWT tokens with 1h expiry
- Rate limiting: 100 requests/min per user" > reqs.md

# 2. Generate the spec
intake init "Auth system" -s reqs.md

# 3. Review the generated spec
intake show specs/auth-system/
# → 4 functional requirements, 6 tasks, 8 acceptance checks

# 4. Export for your preferred agent
intake export specs/auth-system/ -f claude-code -o .

# 5. Implement (manually or with an agent)
# ... coding ...

# 6. Verify compliance
intake verify specs/auth-system/ -p .
# → PASS: 7/8  FAIL: 1/8

# 7. Analyze the failure
intake feedback specs/auth-system/ -p .
# → MAJOR: Rate limiting not implemented in middleware
#   Fix: Add rate_limit decorator to src/api/routes.py

# 8. Fix and re-verify
# ... fix rate limiting ...
intake verify specs/auth-system/ -p .
# → PASS: 8/8

# 9. Mark tasks as completed
intake task update specs/auth-system/ 1 done --note "All checks passing"

# 10. Commit
git add specs/ src/ tests/
git commit -m "feat: implement auth system (spec-verified)"

Quick mode for simple tasks

# Quick bug fix: only generates context.md + tasks.md
intake init "Fix login timeout" -s bug-report.txt --mode quick

Small team (2-5 developers)

Pattern: shared specs in git

The entire team works with the same versioned specs:

# Tech lead generates the spec
intake init "Payment gateway" -s jira.json -s confluence.html --preset standard
git add specs/payment-gateway/
git commit -m "spec: add payment gateway requirements"
git push

# Developer clones and works
git pull
intake show specs/payment-gateway/
intake export specs/payment-gateway/ -f cursor -o .
# ... implement ...
intake verify specs/payment-gateway/ -p .

Pattern: spec per feature branch

Each feature has its spec in its own branch:

# Feature branch
git checkout -b feature/notifications

# Generate spec in the branch
intake init "Notification system" -s reqs.md -s slack-decisions.json
git add specs/notification-system/

# Implement + verify
# ...

# The PR includes spec + implementation
git add src/ tests/ specs/
git commit -m "feat: notification system with spec"
git push origin feature/notifications
# → PR review includes spec review

Pattern: team roles

Roleintake responsibilityMain commands
Tech LeadCreate and review specsinit, add, diff, show
DeveloperImplement and verifyexport, verify, task update
QAVerify and reportverify -f junit, feedback
# Tech Lead: create spec from multiple sources
intake init "User dashboard" \
  -s jira://DASH-100,DASH-101,DASH-102 \
  -s confluence://ENG/Dashboard-RFC \
  -s meeting-notes.md \
  --preset standard

# Developer: export and work
intake export specs/user-dashboard/ -f claude-code -o .
intake task update specs/user-dashboard/ 1 in_progress

# QA: verify and generate report
intake verify specs/user-dashboard/ -p . -f junit > results.xml

Multi-team enterprise

Spec governance

For large organizations, specs need an approval process:

1. Product Owner defines requirements (Jira, Confluence, docs)

2. Tech Lead generates spec (intake init)

3. PR with spec → Review by architect + stakeholders

4. Spec approved → Merge to main

5. Team implements using verified spec

6. CI runs intake verify on each PR

7. Release only if all checks pass

Standardization

Share configuration at the organization level:

# .intake.yaml at the monorepo root
llm:
  model: claude-sonnet-4
  max_cost_per_spec: 1.00

project:
  language: en
  conventions:
    code_style: "PEP 8"
    testing: "pytest with >80% coverage"
    documentation: "Google-style docstrings"

spec:
  requirements_format: ears
  design_depth: moderate
  task_granularity: medium
  risk_assessment: true
  generate_lock: true

export:
  default_format: claude-code

security:
  redact_patterns:
    - "sk-[a-zA-Z0-9]{20,}"
    - "\\b\\d{4}-\\d{4}-\\d{4}-\\d{4}\\b"
  redact_files:
    - "*.env"
    - "*.pem"
    - "*.key"
    - "credentials.*"

Enforcement: use --preset enterprise for teams with regulatory requirements.

Multi-spec for large systems

Structure for microservices or systems with multiple components:

company/
├── .intake.yaml                    # Shared config
├── specs/
│   ├── platform/
│   │   ├── api-gateway/            # API gateway spec
│   │   ├── auth-service/           # Auth service spec
│   │   └── notification-service/   # Notification spec
│   ├── frontend/
│   │   ├── web-dashboard/          # Web dashboard spec
│   │   └── mobile-app/             # Mobile app spec
│   └── infrastructure/
│       ├── monitoring/             # Monitoring spec
│       └── ci-pipeline/            # CI pipeline spec
├── services/
│   ├── api-gateway/
│   ├── auth/
│   └── notifications/
└── frontend/
    ├── web/
    └── mobile/

Multi-spec monorepo

Per-service verification

Each spec is verified against its corresponding project directory:

# Verify each service against its spec
intake verify specs/platform/api-gateway/ -p services/api-gateway/
intake verify specs/platform/auth-service/ -p services/auth/
intake verify specs/frontend/web-dashboard/ -p frontend/web/

CI matrix for parallel execution

# GitHub Actions
jobs:
  verify:
    strategy:
      matrix:
        include:
          - spec: specs/platform/api-gateway
            project: services/api-gateway
          - spec: specs/platform/auth-service
            project: services/auth
          - spec: specs/frontend/web-dashboard
            project: frontend/web
      fail-fast: false
    steps:
      - uses: actions/checkout@v4
      - run: pip install intake-ai-cli
      - run: intake verify ${{ matrix.spec }}/ -p ${{ matrix.project }}/ -f junit > results.xml

Spec lifecycle

Create → Verify → Update → Deprecate

# CREATE: new spec
intake init "Payment v2" -s reqs.md -s jira.json

# VERIFY: on each push/PR
intake verify specs/payment-v2/ -p .

# UPDATE: when requirements change
intake add specs/payment-v2/ -s new-reqs.md --regenerate

# COMPARE: what changed between versions
intake diff specs/payment-v1/ specs/payment-v2/

# DEPRECATE: archive obsolete specs
mkdir -p specs/archived
mv specs/payment-v1/ specs/archived/
git add specs/ && git commit -m "archive: payment v1 (replaced by v2)"

Change management

When requirements change:

# 1. Regenerate spec with new source
intake add specs/my-feature/ -s updated-reqs.md --regenerate

# 2. Compare with the previous version
intake diff specs/my-feature-backup/ specs/my-feature/
# → Added: FR-005 (new requirement)
# → Modified: FR-002 (scope changed)
# → Removed: FR-003 (no longer needed)

# 3. Review the changes
intake show specs/my-feature/

# 4. Re-verify the implementation
intake verify specs/my-feature/ -p .

# 5. If there are failures, analyze
intake feedback specs/my-feature/ -p .

Workflow with AI agents

Complete cycle

intake init → intake export → Agent implements → intake verify → intake feedback → Agent fixes → Repeat
# 1. Generate spec
intake init "Feature X" -s reqs.md

# 2. Export for the agent
intake export specs/feature-x/ -f claude-code -o .

# 3. The agent reads CLAUDE.md + .intake/tasks/ and implements

# 4. Verify
intake verify specs/feature-x/ -p .

# 5. If there are failures, generate feedback
intake feedback specs/feature-x/ -p . --agent-format claude-code
# → The agent reads the suggestions and fixes

# 6. Re-verify until everything passes
intake verify specs/feature-x/ -p .
# → PASS: 12/12

# 7. Mark tasks
intake task update specs/feature-x/ 1 done

Export format per agent

AgentFormatWhat the agent readsCommand
Claude Codeclaude-codeCLAUDE.md + .intake/tasks/TASK-NNN.mdintake export -f claude-code -o .
Cursorcursor.cursor/rules/intake-spec.mdcintake export -f cursor -o .
Kirokirorequirements.md + design.md + tasks.md (native format)intake export -f kiro -o .
GitHub Copilotcopilot.github/copilot-instructions.mdintake export -f copilot -o .
Architectarchitectpipeline.yaml with stepsintake export -f architect -o output/
AnygenericConsolidated SPEC.md + verify.shintake export -f generic -o output/

Feedback formatted per agent

# Suggestions for Claude Code
intake feedback specs/feature-x/ -p . --agent-format claude-code

# Suggestions for Cursor
intake feedback specs/feature-x/ -p . --agent-format cursor

# Generic suggestions (Markdown)
intake feedback specs/feature-x/ -p . --agent-format generic

Regulated industries

Complete audit trail

For industries requiring traceability (finance, healthcare, government):

# .intake.yaml — configuration for maximum traceability
spec:
  requirements_format: ears        # Formal format
  include_sources: true            # Requirement-to-source traceability
  generate_lock: true              # Audit artifact
  risk_assessment: true            # Risk assessment
  auto_mode: false                 # Always full mode

export:
  default_format: generic          # Consolidated SPEC.md as formal document
# Generate with enterprise preset
intake init "Regulated Feature" -s reqs.md --preset enterprise

# The result includes:
# - requirements.md    → formal requirements with IDs
# - sources.md         → traceability to original sources
# - spec.lock.yaml     → hashes, timestamps, costs
# - acceptance.yaml    → verifiable checks

Approval gates

Phase 1: Specification
  ├── Product Owner defines requirements
  ├── intake init generates spec
  ├── PR: spec review by architect + compliance
  └── Merge (gate: architect approval)

Phase 2: Implementation
  ├── Developer exports spec for agent
  ├── Implementation
  ├── CI runs intake verify
  └── PR (gate: all checks pass)

Phase 3: Release
  ├── QA runs intake verify -f junit
  ├── JUnit report as evidence
  ├── intake show for metrics
  └── Release (gate: QA + compliance approval)

Bidirectional traceability

intake provides the complete traceability chain:

Source (reqs.md, jira.json)
    ↓ recorded in sources.md
Requirement (FR-001 in requirements.md)
    ↓ referenced in design.md
Component (AuthService)
    ↓ assigned in tasks.md
Task (Task 1: Implement AuthService)
    ↓ verified in acceptance.yaml
Check (check-01: Tests pass)
    ↓ evidence in verify report (JUnit XML)
Verifiable result

Each link is a versionable, auditable, and queryable text file.

See Security > Auditing and traceability for more details.