Stage: prompt-first workflow (stable) Β· platform foundation (W1 in progress) β see Roadmap.
SpecTeam keeps specs, decisions, and AI agents aligned.
δΈζζζ‘£: README.zh-CN.md
SpecTeam is a Git-native workflow for AI-native spec review and decision alignment.
SpecTeam is the current market-facing wedge: AI-native spec review and decision alignment for product and engineering teams using multiple AI tools. It helps teams detect divergence across PRDs, architecture docs, and AI-generated proposals, make decisions quickly, and sync the outcome back into a shared source of truth.
SpecTeam now uses one consistent name across the repository, prompt skills, commands, and product story.
- Architecture
- Brand Strategy
- Product Requirements
- PMF Validation Loop
- Design Partner Playbook
- Design Partner Templates
- Messaging Kit
- Demo Script
- Go-to-Market
- Dependency-Ordered Roadmap
- Foundation Execution Plan
git clone https://github.com/surebeli/SpecTeam.git /tmp/spec-team
# Install to current project
mkdir -p .claude/commands
for skill in /tmp/spec-team/plugin/skills/*/SKILL.md; do
cp "$skill" ".claude/commands/$(basename $(dirname $skill)).md"
done
# Or install globally (applies to all projects)
mkdir -p ~/.claude/commands
for skill in /tmp/spec-team/plugin/skills/*/SKILL.md; do
cp "$skill" ~/.claude/commands/$(basename $(dirname $skill)).md
done/plugin marketplace add surebeli/SpecTeam
/plugin install spec-team@SpecTeamgit clone https://github.com/surebeli/SpecTeam.git ~/.codex/skills/spec-teamCopy SPECTEAM.md to your project root, then tell your AI tool:
You are now the SpecTeam Workflow. Follow all rules in ./SPECTEAM.md strictly.
Skill: init
We provide a simulated scenario to let you experience SpecTeam's conflict detection and resolution in 1 minute.
# 1. Clone and install skills
git clone https://github.com/surebeli/SpecTeam.git
cd SpecTeam
# 2. Init and point to mock data
# When asked for document directories, enter: ./tests/mock-scenarios/demo-1-conflict/alice, ./tests/mock-scenarios/demo-1-conflict/bob
/spec-init
# 3. Detect conflicts between alice (REST) and bob (GraphQL)
/spec-review
# 4. Resolve a conflict (e.g., D-001)
/spec-align D-001 βββββββββββββββββββββββββββββββββββ
β First use (One-time) β
β /spec-init β
β Create .spec/, bind identityβ
β Write THESIS, normalize docs β
ββββββββββββββββ¬βββββββββββββββββββ
β
ββββββββββββββββββββββββββββββββββββββββββ
β Daily Collaboration β
β β
ββββββββββββββββΌββββββββββββββββ β
β /spec-pull β β
β Pull remote + auto-parse β β
ββββββββββββββββ¬ββββββββββββββββ β
β β
ββββββββββββββββΌββββββββββββββββ β
β Edit source docs β β
β (Human or AI edits code/doc) β β
ββββββββββββββββ¬ββββββββββββββββ β
β β
ββββββββββββββββΌββββββββββββββββ β
β /spec-push β β
β Sync to .spec/ + push β β
ββββββββββββββββ¬ββββββββββββββββ β
β β
βββββββββββββββββββββ¬ββββββββββββββββββββ
β
βββββββββββββββββββββββββΌββββββββββββββββββββββββ
β Conflict Resolution Flow β
β β
β 1. /spec-review (Find divergences) β
β 2. /spec-align (Propose/Approve decision) β
β 3. /spec-update (Verify implementation) β
βββββββββββββββββββββββββββββββββββββββββββββββββ
| Command | Description |
|---|---|
/spec-init |
Initialize or join a project |
/spec-whoami |
Check or bind local identity |
/spec-pull |
Pull remote changes and auto-parse |
/spec-update |
Sync source documents to .spec/ |
/spec-push |
Push changes to remote after divergence check |
/spec-review |
Analyze all docs for divergences vs THESIS |
/spec-align |
Resolve divergences via Propose β Approve |
/spec-status |
Comprehensive collaboration dashboard |
/spec-suggest |
AI-driven suggestions based on diffs |
/spec-diff |
View structured diff grouped by collaborator |
/spec-parse |
Scan documents and update INDEX.md |
/spec-archive |
Freeze and archive a design proposal |
/spec-import |
Import external docs via MCP/HTTP |
/spec-sos |
Emergency auto-resolution of Git merge conflicts in .spec/ |
graph LR
subgraph Daily[Daily Workflow]
pull[pull]
update[update]
push[push]
end
subgraph Resolve[Review and Resolve]
review[review]
align[align]
end
subgraph Auto[Auto-triggered]
parse[parse]
end
subgraph Util[Utility]
init[init]
status[status]
suggest[suggest]
diff[diff]
whoami[whoami]
importSkill[import]
sos[sos]
end
init -->|triggers| parse
pull -->|triggers| parse
update -->|triggers| parse
importSkill -->|triggers| parse
review -.->|feeds| align
align -.->|enables| push
status -.->|recommends| review
suggest -.->|recommends| align
style parse fill:#4CAF50,color:#fff
style align fill:#E55B3C,color:#fff
style review fill:#FF9800,color:#fff
style init fill:#2196F3,color:#fff
Legend: Solid arrows = auto-triggers. Dotted arrows = workflow recommendations.
Alice (Claude Code) Bob (Codex CLI)
β β
/spec-init (founder) /spec-init (join)
Set project goal β THESIS.md Review goal β join
β β
Edit .spec/design/alice/ Edit .spec/design/bob/
β β
/spec-push βββββββ Git ββββββββββ /spec-push
β β
/spec-pull /spec-pull
β β
βββββββββββββ divergence found ββββββββ
β
/spec-review
Analyze docs vs THESIS β generate D-001
Write DIVERGENCES.md + commit anchors
β
βββββββββββββββββββββββββ΄βββββββββββββββββββββ
β β
Alice: /spec-align D-001 β
Pick resolution β proposed π‘ β
β οΈ THESIS not updated yet β
/spec-push β
β β
β Bob: /spec-pull
β π‘ "D-001 awaiting your confirmation"
β Bob: /spec-align D-001
β β Agree β resolved β
β Generate decisions/D-001.md
β Update THESIS Decision Log
β /spec-push
β β
ββββββββββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββ§βββββββββββββββββββββββββββββββββββββββββββ
β [Side flow] Apply decision to source documents β
β β
β decisions/D-001.md contains per-party instruction blocks β
β (background / required changes / acceptance criterion) β
β β
β Alice Bob β
β Read decisions/D-001.md Read decisions/D-001.md β
β Pass to own model β Pass to own model β β
β Model edits source doc Model edits source doc β
β β β β
β /spec-update /spec-update β
β AI verifies acceptance AI verifies acceptance β
β criterion criterion β
β β Pass β Pass β
β β β β
β ββββββββββββ all β
ββββββββββββββ β
β β β
β D-001 fully-closed π β
ββββββββββββββββββββ€βββββββββββββββββββββββββββββββββββββββββββ
β
/spec-push (no open/proposed, push directly)
| State | Meaning | Who can act |
|---|---|---|
open π΄ |
Unresolved | Either party can propose |
proposed π‘ |
One party proposed, awaiting other's confirmation | Other party confirms/rejects/modifies; proposer can withdraw |
resolved β
|
Both parties agreed, source documents being updated | Each party runs update to complete source doc updates |
fully-closed π |
All source documents updated per decision | Read-only, fully archived |
Written by review, read/written by align, read by push/status:
## Open
### D-001: API style choice
Status: open π΄ | Parties: alice vs bob | Priority: blocking
## Proposed
### D-002: Deployment strategy
Status: proposed π‘ | Proposer: alice | Awaiting bob's confirmation
Proposed decision: adopt Kubernetes (bob's approach) | Reasoning: ...
## Resolved
### D-003: Data model β
Status: resolved | Proposer: alice | Confirmer: bob
Decision: adopt NoSQL | Resolved at: 2026-04-09
Change instructions: See .spec/decisions/D-003.mdalign automatically switches behavior based on divergence state:
- Divergence is open β show comparison table + AI recommendation; user picks resolution β status becomes
proposed, THESIS not updated yet - Divergence is proposed, awaiting my confirmation β show proposer's resolution and reasoning:
- β
Agree β
resolved; AI generates per-party change instruction blocks (with acceptance criteria); update THESIS Decision Log - β Reject (with reason) β revert to
open - π Modify and counter-propose β still
proposed, proposer changes to me
- β
Agree β
- Divergence is proposed, I am proposer β show waiting state; option to withdraw
When align confirms a resolution, it creates .spec/decisions/D-{N}.md containing:
- Full decision + reasoning
- Per-party change instruction blocks: what to change, in which file, and an acceptance criterion for automated verification by
update
Users can pass decisions/D-001.md directly to their own model to execute source document changes.
last-review.json records each collaborator's commit hash at last analysis time:
- New commits β re-analyze
- No new commits β skip
resolved/proposedβ not disrupted
After pulling: detects proposed divergences awaiting your confirmation, and resolved divergences with pending Action Items for you.
Before pushing, distinguishes:
- π‘ Proposals awaiting my confirmation β suggest confirming first
- π΄ Unresolved divergences β warn and wait
- π‘ Awaiting other party's confirmation β inform (non-blocking)
If you encounter a Git tree conflict (e.g., <<<<<<< HEAD markers) while running /spec-pull or /spec-push, do not manually edit the .spec/ metadata. Simply run /spec-sos to automatically parse and intelligently merge conflicting divergences and JSON state safely.
For any destructive or global write actions, you can append --dry-run to preview the AI's intended actions without touching the file system:
/spec-review --dry-run
/spec-align --dry-run D-001
/spec-update --dry-runWhile SpecTeam is "Prompt-First", we provide lightweight companion tools to enhance your workflow.
A zero-logic Node.js CLI that assists with installation and provides a local status dashboard.
spec install: Auto-copies skills to your.claude/commandsdirectory.spec status: Displays a visual summary ofDIVERGENCES.mdand repository state (zero-token cost).spec init: Scaffolds the.spec/directory and guides you to the AI/spec-initprompt.spec sos: Detects Git tree conflicts and provides emergency instructions.
A visual dashboard integrated into your IDE sidebar.
- Sidebar Dashboard: View all
Open π΄,Proposed π‘, andResolved βdivergences at a glance. - Quick Action: Click the "Play" icon next to any open divergence to instantly open a terminal and trigger
/spec-alignin your AI assistant.
init does a one-time copy. If source documents (e.g. ./design/spec.md) change afterward, the copies in .spec/design/{code}/ are not automatically updated.
update records source file hashes in last-sync.json, detecting changes incrementally on each run:
/spec-update # Detect and sync all changes
/spec-update --dry-run # Preview changes without writing
/spec-update --force # Skip divergence confirmation, force syncWhen align confirms a resolution, AI analyzes both parties' documents against the decision and generates Action Items written to decisions/D-{N}.md:
## Source Document Action Items
| Collaborator | Source file | Required changes | Status |
|--------------|-------------|-----------------|--------|
| alice | ./design/api.md | Keep REST design unchanged | β
No changes needed |
| bob | ./design/api-proposal.md | Replace GraphQL with REST, update interface examples | β³ Pending update |After each party updates their source documents and runs update, AI auto-verifies against the acceptance criterion:
- β Satisfied β Action Item marked complete
- β Not satisfied β specific guidance (e.g. "GraphQL description still present in section 3")
- All complete β divergence upgrades to
fully-closedπ
init records the current branch as the protected SpecTeam main branch (git config spec.main-branch). All other skills enforce a branch guard β operations on any other branch are rejected:
β Current branch 'feature-x' is not the SpecTeam main branch 'main'.
Switch with: git checkout main
Generated in the target project after initialization:
.spec/
βββ COLLABORATORS.md # Identity map: member codes β doc directories; Main Branch metadata
βββ THESIS.md # Project design constitution (North Star) + Decision Log
βββ RULES.md # Code conventions
βββ SIGNALS.md # Runtime status & blockers
βββ INDEX.md # Auto-generated document index
βββ DIVERGENCES.md # Divergence registry (D-001β¦status summary): written by review, read by align/push/status
βββ last-parse.json # Parse cache (file hashes)
βββ last-review.json # Review anchor: per-collaborator commit hashes + source file hashes at last review
βββ last-sync.json # Source document sync state: source file hashes, maintained by update skill
βββ design/
β βββ alice/ # alice's normalized documents
β βββ bob/
β βββ shared/ # Jointly maintained (optional)
βββ decisions/ # Per-divergence decision files (created by align on resolution)
β βββ D-001.md # Full decision + per-party change instruction blocks + acceptance criteria
β βββ D-002.md
βββ archive/ # Frozen proposals
SpecTeam/
βββ .claude-plugin/
β βββ marketplace.json # Marketplace manifest
β βββ plugin.json # Claude Code plugin definition
βββ .codex-plugin/plugin.json # Codex CLI plugin manifest
βββ plugin/ # Plugin core
β βββ skills/ # 13 Skills (shared across platforms)
β β βββ spec-init/
β β βββ spec-whoami/
β β βββ spec-pull/
β β βββ spec-push/
β β βββ spec-update/
β β βββ spec-parse/
β β βββ spec-status/
β β βββ spec-suggest/
β β βββ spec-diff/
β β βββ spec-review/
β β βββ spec-align/
β β βββ spec-archive/
β β βββ spec-import/
β βββ CLAUDE.md # Shared context (Claude Code)
β βββ AGENTS.md # Shared context (Codex CLI)
βββ SPECTEAM.md # Standalone prompt version (manual mode)
βββ README.md # This file (English)
βββ README.zh-CN.md # Chinese translation
βββ docs/design/ # Example design documents
MIT

