Quickstart — CLI Interview Decision Moments
Operator / implementer walkthrough. Assumes a checkout at spec-kitty/ root.
1. Refresh the editable install after the events bump
pip install -e ".[dev]"
Verify:
python -c "import spec_kitty_events; print(spec_kitty_events.__version__)"
# expect: 4.0.0
2. Run the CLI locally
spec-kitty agent decision --help
spec-kitty agent decision open --help
3. Happy path — specify interview
# Simulated session
MISSION=my-feature-01ABCDEF
spec-kitty agent decision open \
--mission $MISSION \
--flow specify \
--slot-key specify.intent-summary.q1 \
--input-key auth_strategy \
--question "Which auth strategy should we use?" \
--options '["session","oauth2","oidc","Other"]'
# → {"decision_id": "01J...", "idempotent": false, ...}
# User answers "oauth2":
spec-kitty agent decision resolve 01J... --final-answer oauth2
# Verify clean state:
spec-kitty agent decision verify --mission $MISSION
# → {"status": "clean", ...}
4. Deferred path + sentinel
spec-kitty agent decision defer 01J... --rationale "revisit in plan"
# LLM then writes into spec.md:
# [NEEDS CLARIFICATION: auth strategy deferred from specify] <!-- decision_id: 01J... -->
spec-kitty agent decision verify --mission $MISSION
# → {"status": "clean", "findings": []}
# If the marker is removed from spec.md, verify fails:
spec-kitty agent decision verify --mission $MISSION
# → non-zero exit; findings include DEFERRED_WITHOUT_MARKER
5. Idempotent retry
# First call:
spec-kitty agent decision open \
--mission $MISSION --flow specify \
--slot-key specify.intent-summary.q1 --input-key auth_strategy \
--question "Which auth strategy should we use?"
# → 01J... (new)
# Immediate retry with identical key:
spec-kitty agent decision open ... (same args)
# → 01J... (same decision_id, idempotent=true)
6. Local-first verification
unset SPEC_KITTY_ENABLE_SAAS_SYNC
# Run any decision operation — no SaaS calls, no hosted auth access:
spec-kitty agent decision open ...
7. Testing
pytest tests/specify_cli/decisions/ tests/specify_cli/cli/commands/test_decision.py -q
ruff check src/specify_cli/decisions/ src/specify_cli/cli/commands/decision.py
mypy src/specify_cli/decisions/
8. Charter integration smoke
spec-kitty charter interview --mission $MISSION
# Walk through questions; verify decisions/ directory fills up; answers.yaml unchanged in format.
9. Release checklist
- □
pyproject.tomlspec-kitty-events==4.0.0 - □
src/specify_cli/spec_kitty_events/refreshed from 4.0.0 source - □
src/specify_cli/decisions/module present and tested - □
src/specify_cli/cli/commands/decision.pyregistered incli/main.py - □
specify.mdandplan.mdtemplates updated with ask-time/terminal instructions - □ Charter interview wired to the API
- □
pytest tests/ -qgreen - □
ruff check .+ruff format --check .clean - □
mypyclean on changed modules