wicked-garden 12.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/archetypes.json +166 -0
- package/.claude-plugin/components.json +75 -0
- package/.claude-plugin/marketplace.json +15 -0
- package/.claude-plugin/plugin.json +174 -0
- package/.claude-plugin/specialist.json +48 -0
- package/.claude-plugin/stack-registry.json +96 -0
- package/AGENTS.md +13 -0
- package/CHANGELOG.md +712 -0
- package/CONTRIBUTING.md +99 -0
- package/ETHOS.md +83 -0
- package/LICENSE +21 -0
- package/README.md +115 -0
- package/WICKED_GARDEN_BUS_EVENTS.md +149 -0
- package/agents/agentic/architect.md +449 -0
- package/agents/agentic/performance-analyst.md +702 -0
- package/agents/agentic/safety-reviewer.md +662 -0
- package/agents/crew/implementer.md +163 -0
- package/agents/crew/researcher.md +94 -0
- package/agents/crew/reviewer.md +184 -0
- package/agents/data/data-engineer.md +227 -0
- package/agents/engineering/api-documentarian.md +440 -0
- package/agents/engineering/migration-engineer.md +301 -0
- package/agents/engineering/solution-architect.md +208 -0
- package/agents/jam/brainstorm-facilitator.md +297 -0
- package/agents/jam/council.md +322 -0
- package/agents/jam/quick-facilitator.md +85 -0
- package/agents/persona/persona-agent.md +121 -0
- package/agents/platform/compliance-officer.md +266 -0
- package/agents/platform/privacy-expert.md +496 -0
- package/agents/platform/security-engineer.md +287 -0
- package/agents/product/a11y-expert.md +323 -0
- package/agents/product/requirements-analyst.md +238 -0
- package/agents/product/ui-reviewer.md +180 -0
- package/agents/product/ux-designer.md +199 -0
- package/agents/product/value-strategist.md +269 -0
- package/agents/qe/semantic-reviewer.md +78 -0
- package/commands/agentic/audit.md +24 -0
- package/commands/agentic/design.md +24 -0
- package/commands/agentic/frameworks.md +25 -0
- package/commands/agentic/review.md +27 -0
- package/commands/archetype/build.md +12 -0
- package/commands/archetype/decide.md +12 -0
- package/commands/archetype/explore.md +12 -0
- package/commands/archetype/incident.md +12 -0
- package/commands/archetype/migrate.md +12 -0
- package/commands/archetype/modernize.md +12 -0
- package/commands/archetype/review.md +14 -0
- package/commands/archetype/ship.md +12 -0
- package/commands/archetype/specify.md +12 -0
- package/commands/archetype/triage.md +12 -0
- package/commands/compile.md +37 -0
- package/commands/data/analyze.md +18 -0
- package/commands/data/data.md +21 -0
- package/commands/data/ml.md +18 -0
- package/commands/data/ontology.md +22 -0
- package/commands/data/pipeline.md +17 -0
- package/commands/deliberate.md +181 -0
- package/commands/engineering/add-field.md +77 -0
- package/commands/engineering/apply.md +58 -0
- package/commands/engineering/arch.md +26 -0
- package/commands/engineering/debug.md +27 -0
- package/commands/engineering/docs.md +27 -0
- package/commands/engineering/new-generator.md +257 -0
- package/commands/engineering/patch-plan.md +59 -0
- package/commands/engineering/plan.md +29 -0
- package/commands/engineering/remove.md +48 -0
- package/commands/engineering/rename.md +44 -0
- package/commands/engineering/review.md +32 -0
- package/commands/help.md +128 -0
- package/commands/install.md +118 -0
- package/commands/intent.md +54 -0
- package/commands/jam/brainstorm.md +37 -0
- package/commands/jam/council.md +49 -0
- package/commands/jam/quick.md +21 -0
- package/commands/jam/revisit.md +79 -0
- package/commands/persona/as.md +136 -0
- package/commands/persona/define.md +24 -0
- package/commands/persona/list.md +118 -0
- package/commands/platform/actions.md +20 -0
- package/commands/platform/assert.md +18 -0
- package/commands/platform/audit.md +23 -0
- package/commands/platform/compliance.md +20 -0
- package/commands/platform/gh.md +22 -0
- package/commands/platform/health.md +22 -0
- package/commands/platform/incident.md +23 -0
- package/commands/platform/infra.md +24 -0
- package/commands/platform/peer-health.md +103 -0
- package/commands/platform/plugin-health.md +58 -0
- package/commands/platform/security.md +38 -0
- package/commands/platform/toolchain.md +96 -0
- package/commands/platform/traces.md +20 -0
- package/commands/product/a11y.md +19 -0
- package/commands/product/acceptance.md +19 -0
- package/commands/product/align.md +20 -0
- package/commands/product/analyze.md +23 -0
- package/commands/product/elicit.md +19 -0
- package/commands/product/listen.md +24 -0
- package/commands/product/mockup.md +20 -0
- package/commands/product/screenshot.md +19 -0
- package/commands/product/strategy.md +40 -0
- package/commands/product/synthesize.md +23 -0
- package/commands/product/ux-review.md +42 -0
- package/commands/product/ux.md +20 -0
- package/commands/product/visual-direction.md +34 -0
- package/commands/prove.md +47 -0
- package/commands/report-issue.md +243 -0
- package/commands/reset.md +144 -0
- package/commands/search/blast-radius.md +58 -0
- package/commands/search/hotspots.md +55 -0
- package/commands/search/index.md +38 -0
- package/commands/search/lineage.md +47 -0
- package/commands/search/service-map.md +79 -0
- package/commands/setup.md +363 -0
- package/commands/smaht/briefing.md +200 -0
- package/commands/smaht/events-import.md +95 -0
- package/commands/smaht/state.md +19 -0
- package/commands/where-am-i.md +58 -0
- package/docs/README.md +32 -0
- package/docs/adr/0001-code-relationship-graph-engine.md +116 -0
- package/docs/adr/0002-major-cleanup-keep-cut.md +91 -0
- package/docs/adr/0003-peers-gate-required-layers-optin.md +41 -0
- package/docs/adr/0004-code-graph-moves-to-wicked-brain.md +47 -0
- package/docs/brain-chunk-format.md +135 -0
- package/docs/compiler.md +95 -0
- package/docs/daemon-api.md +70 -0
- package/docs/domains.md +197 -0
- package/docs/getting-started.md +208 -0
- package/docs/plans/2026-06-08-wicked-loom-conduct.md +1337 -0
- package/docs/plans/2026-06-08-wicked-loom-contract.md +638 -0
- package/docs/plans/2026-06-08-wicked-loom-cutover.md +1300 -0
- package/docs/plans/2026-06-08-wicked-loom-expand-compose.md +843 -0
- package/docs/plans/2026-06-08-wicked-loom-flow-cutover.md +403 -0
- package/docs/plans/2026-06-10-codegraph-to-brain-phase1a-graph-core.md +838 -0
- package/docs/plans/2026-06-10-codegraph-to-brain-phase1b-injected-edges.md +44 -0
- package/docs/required-peers.md +60 -0
- package/docs/specs/2026-06-08-wicked-loom-extraction.md +225 -0
- package/docs/specs/2026-06-10-codegraph-to-brain-migration.md +168 -0
- package/docs/v11/archetypes.md +231 -0
- package/hooks/hooks.json +275 -0
- package/hooks/scripts/bootstrap.py +1797 -0
- package/hooks/scripts/invoke.py +62 -0
- package/hooks/scripts/notification.py +166 -0
- package/hooks/scripts/permission_request.py +223 -0
- package/hooks/scripts/post_tool.py +1374 -0
- package/hooks/scripts/pre_compact.py +272 -0
- package/hooks/scripts/pre_tool.py +1278 -0
- package/hooks/scripts/prompt_submit.py +1109 -0
- package/hooks/scripts/session_end.py +95 -0
- package/hooks/scripts/stop.py +624 -0
- package/hooks/scripts/subagent_lifecycle.py +464 -0
- package/hooks/scripts/subscribers/on_gate_decided.py +84 -0
- package/hooks/scripts/task_completed.py +322 -0
- package/hooks/scripts/worktree_guard.py +148 -0
- package/hooks/subscriptions/on_gate_decided.json +9 -0
- package/install.mjs +128 -0
- package/package.json +41 -0
- package/pyproject.toml +59 -0
- package/schemas/README.md +32 -0
- package/schemas/assert_contracts.json +37 -0
- package/schemas/health_probe.json +46 -0
- package/schemas/plugin_status.json +37 -0
- package/scripts/_adapters/__init__.py +166 -0
- package/scripts/_adapters/jira_adapter.py +18 -0
- package/scripts/_adapters/linear_adapter.py +18 -0
- package/scripts/_adapters/miro_adapter.py +18 -0
- package/scripts/_adapters/notion_adapter.py +18 -0
- package/scripts/_agents.py +357 -0
- package/scripts/_brain_ingest/__init__.py +2 -0
- package/scripts/_brain_ingest/session_fact_extractor.py +341 -0
- package/scripts/_brain_port.py +163 -0
- package/scripts/_bus.py +1081 -0
- package/scripts/_bus_catalog_gen.py +93 -0
- package/scripts/_bus_consumers.json +46 -0
- package/scripts/_bus_emit.py +43 -0
- package/scripts/_capability_registry.py +334 -0
- package/scripts/_capability_resolver.py +322 -0
- package/scripts/_domain_store.py +559 -0
- package/scripts/_event_log_reader.py +154 -0
- package/scripts/_event_schema.py +305 -0
- package/scripts/_event_store.py +397 -0
- package/scripts/_heavy_cadence.py +324 -0
- package/scripts/_integration_resolver.py +321 -0
- package/scripts/_logger.py +151 -0
- package/scripts/_loom.py +482 -0
- package/scripts/_paths.py +133 -0
- package/scripts/_python.sh +22 -0
- package/scripts/_run.py +137 -0
- package/scripts/_session.py +502 -0
- package/scripts/_validate_registry.py +1042 -0
- package/scripts/_wicked_testing_probe.py +277 -0
- package/scripts/agentic/analyze_agents.py +391 -0
- package/scripts/agentic/detect_framework.py +420 -0
- package/scripts/agentic/issue_taxonomy.py +357 -0
- package/scripts/agentic/pattern_scorer.py +434 -0
- package/scripts/classify/persist.py +169 -0
- package/scripts/compiler/compile.py +552 -0
- package/scripts/compiler/phase0/VERDICT.md +60 -0
- package/scripts/compiler/phase0/detect.py +292 -0
- package/scripts/compiler/phase0/emit.py +228 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.bindings.json +30 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.lint-output.txt +17 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/.wg/evidence/failing-tests.txt +4 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/.wg/evidence/honest-tests.txt +2 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/fab-fail.build.md +8 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/fab-missing.build.md +8 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/honest.build.md +8 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/wg_check_claims.py +174 -0
- package/scripts/compiler/phase0/evidence/command_iq.bindings.json +45 -0
- package/scripts/compiler/phase0/evidence/command_iq.lint-output.txt +17 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/.projects/evidence-domain/phase-1-clarify/evidence/failing-tests.txt +4 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/.projects/evidence-domain/phase-1-clarify/evidence/honest-tests.txt +3 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/fab-fail.build.md +8 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/fab-missing.build.md +8 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/honest.build.md +8 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/wg_check_claims.py +174 -0
- package/scripts/compiler/phase0/evidence/memos.bindings.json +28 -0
- package/scripts/compiler/phase0/evidence/memos.lint-output.txt +17 -0
- package/scripts/compiler/phase0/evidence/memos.stage/.wg/evidence/failing-tests.txt +4 -0
- package/scripts/compiler/phase0/evidence/memos.stage/.wg/evidence/honest-tests.txt +2 -0
- package/scripts/compiler/phase0/evidence/memos.stage/fab-fail.build.md +8 -0
- package/scripts/compiler/phase0/evidence/memos.stage/fab-missing.build.md +8 -0
- package/scripts/compiler/phase0/evidence/memos.stage/honest.build.md +8 -0
- package/scripts/compiler/phase0/evidence/memos.stage/wg_check_claims.py +174 -0
- package/scripts/compiler/phase0/evidence/verdict.json +104 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.bindings.json +29 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.lint-output.txt +17 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/coverage/failing-tests.txt +4 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/coverage/honest-tests.txt +3 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/fab-fail.build.md +8 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/fab-missing.build.md +8 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/honest.build.md +8 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/wg_check_claims.py +174 -0
- package/scripts/compiler/phase0/evidence/wire-vault-transcript.txt +60 -0
- package/scripts/compiler/phase0/run_probe.py +234 -0
- package/scripts/compiler/phase0/wire_vault.py +310 -0
- package/scripts/crew/__init__.py +0 -0
- package/scripts/crew/_task_audit_writer.py +243 -0
- package/scripts/crew/_task_reader.py +389 -0
- package/scripts/crew/archetypes_v11.py +348 -0
- package/scripts/crew/detectors/__init__.py +12 -0
- package/scripts/crew/flow_compiler.py +121 -0
- package/scripts/crew/phase_manager.py +703 -0
- package/scripts/crew/scope_delta.py +264 -0
- package/scripts/crew/specialist_resolver.py +218 -0
- package/scripts/crew/stack_registry.py +189 -0
- package/scripts/data/data_profiler.py +271 -0
- package/scripts/data/ontology_recommender.py +231 -0
- package/scripts/data/schema_validator.py +267 -0
- package/scripts/delivery/drift.py +739 -0
- package/scripts/delivery/telemetry.py +614 -0
- package/scripts/engineering/patch/codegraph_db.py +125 -0
- package/scripts/engineering/patch/generators/__init__.py +56 -0
- package/scripts/engineering/patch/generators/base.py +373 -0
- package/scripts/engineering/patch/generators/csharp_generator.py +494 -0
- package/scripts/engineering/patch/generators/go_generator.py +430 -0
- package/scripts/engineering/patch/generators/java_generator.py +928 -0
- package/scripts/engineering/patch/generators/jsp_generator.py +454 -0
- package/scripts/engineering/patch/generators/kotlin_generator.py +561 -0
- package/scripts/engineering/patch/generators/perl_generator.py +510 -0
- package/scripts/engineering/patch/generators/php_generator.py +644 -0
- package/scripts/engineering/patch/generators/propagation_engine.py +929 -0
- package/scripts/engineering/patch/generators/python_generator.py +487 -0
- package/scripts/engineering/patch/generators/ruby_generator.py +463 -0
- package/scripts/engineering/patch/generators/rust_generator.py +400 -0
- package/scripts/engineering/patch/generators/sql_generator.py +594 -0
- package/scripts/engineering/patch/generators/typescript_generator.py +439 -0
- package/scripts/engineering/patch/patch.py +800 -0
- package/scripts/engineering/patch/safety.py +429 -0
- package/scripts/jam/__init__.py +0 -0
- package/scripts/jam/_bus_consumers.py +271 -0
- package/scripts/jam/agentic_cli_registry.py +703 -0
- package/scripts/jam/consensus.py +737 -0
- package/scripts/jam/detect_clis.py +409 -0
- package/scripts/jam/jam.py +283 -0
- package/scripts/jam/save_transcript.py +171 -0
- package/scripts/loom/__init__.py +22 -0
- package/scripts/loom/cli.py +170 -0
- package/scripts/loom/compose.py +180 -0
- package/scripts/loom/gate.py +120 -0
- package/scripts/loom/manifest.py +140 -0
- package/scripts/loom/resolve.py +59 -0
- package/scripts/persona/__init__.py +0 -0
- package/scripts/persona/registry.py +688 -0
- package/scripts/platform/guard_pipeline.py +1214 -0
- package/scripts/platform/guard_profiles.py +216 -0
- package/scripts/platform/observability/assert_contracts.py +434 -0
- package/scripts/platform/observability/health_probe.py +915 -0
- package/scripts/platform/observability/ops_log_viewer.py +209 -0
- package/scripts/platform/prereq_doctor.py +567 -0
- package/scripts/qe/conditions_manifest.py +260 -0
- package/scripts/qe/content_sanitizer.py +160 -0
- package/scripts/qe/coverage_tracker.py +535 -0
- package/scripts/qe/discover_scenarios.py +243 -0
- package/scripts/qe/evidence_tracker.py +232 -0
- package/scripts/qe/prove.py +196 -0
- package/scripts/qe/registry_lookup.py +80 -0
- package/scripts/qe/registry_store.py +176 -0
- package/scripts/qe/semantic_review.py +1005 -0
- package/scripts/qe/vault_gate.py +382 -0
- package/scripts/qe/verdict_audit.py +175 -0
- package/scripts/qe/verdict_schema.py +335 -0
- package/scripts/reset.py +220 -0
- package/scripts/resolve_path.py +22 -0
- package/scripts/sentinel/invariants.py +402 -0
- package/scripts/sentinel/pre_push.py +73 -0
- package/scripts/setup/__init__.py +1 -0
- package/scripts/setup/detect_state.py +114 -0
- package/scripts/setup/migrate_legacy.py +67 -0
- package/scripts/setup/migrate_v6_projects.py +232 -0
- package/scripts/setup/onboarding.py +114 -0
- package/scripts/smaht/_bus_consumers.py +98 -0
- package/scripts/smaht/adapters/__init__.py +83 -0
- package/scripts/smaht/adapters/brain_adapter.py +254 -0
- package/scripts/smaht/adapters/context7_adapter.py +438 -0
- package/scripts/smaht/adapters/delegation_adapter.py +104 -0
- package/scripts/smaht/adapters/domain_adapter.py +206 -0
- package/scripts/smaht/adapters/events_adapter.py +231 -0
- package/scripts/smaht/adapters/tools_adapter.py +49 -0
- package/scripts/smaht/cheatsheet_store.py +236 -0
- package/scripts/smaht/context_package.py +386 -0
- package/scripts/smaht/knowledge_graph.py +395 -0
- package/scripts/smaht/propose_skills.py +856 -0
- package/scripts/smaht/test_cheatsheet_store.py +428 -0
- package/scripts/statusline.py +151 -0
- package/scripts/where_am_i.py +236 -0
- package/skills/agentic/agentic-patterns/SKILL.md +91 -0
- package/skills/agentic/agentic-patterns/refs/anti-patterns-design.md +283 -0
- package/skills/agentic/agentic-patterns/refs/anti-patterns-operational.md +216 -0
- package/skills/agentic/agentic-patterns/refs/pattern-catalog.md +329 -0
- package/skills/agentic/context-engineering/SKILL.md +142 -0
- package/skills/agentic/context-engineering/refs/caching-and-optimization.md +251 -0
- package/skills/agentic/context-engineering/refs/compression-techniques.md +171 -0
- package/skills/agentic/context-engineering/refs/cost-calculation-budget.md +250 -0
- package/skills/agentic/context-engineering/refs/cost-optimization-reporting.md +300 -0
- package/skills/agentic/context-engineering/refs/selective-loading.md +179 -0
- package/skills/agentic/frameworks/SKILL.md +191 -0
- package/skills/agentic/frameworks/refs/framework-profiles-1.md +209 -0
- package/skills/agentic/frameworks/refs/framework-profiles-2.md +214 -0
- package/skills/agentic/frameworks/refs/migration-patterns-paths.md +267 -0
- package/skills/agentic/frameworks/refs/migration-patterns-testing.md +208 -0
- package/skills/agentic/refs/audit.md +134 -0
- package/skills/agentic/refs/design.md +137 -0
- package/skills/agentic/refs/frameworks.md +102 -0
- package/skills/agentic/refs/review.md +160 -0
- package/skills/agentic/review-methodology/SKILL.md +186 -0
- package/skills/agentic/review-methodology/refs/deliverable-templates.md +246 -0
- package/skills/agentic/review-methodology/refs/issue-taxonomy-quality-testing.md +277 -0
- package/skills/agentic/review-methodology/refs/issue-taxonomy-reliability-safety.md +253 -0
- package/skills/agentic/trust-and-safety/SKILL.md +177 -0
- package/skills/agentic/trust-and-safety/refs/guardrails-actions.md +246 -0
- package/skills/agentic/trust-and-safety/refs/guardrails-input-output.md +238 -0
- package/skills/agentic/trust-and-safety/refs/guardrails-resources.md +209 -0
- package/skills/agentic/trust-and-safety/refs/safety-checklist-advanced.md +209 -0
- package/skills/agentic/trust-and-safety/refs/safety-checklist-core.md +215 -0
- package/skills/archetype/SKILL.md +104 -0
- package/skills/archetype/refs/build.md +142 -0
- package/skills/archetype/refs/decide.md +117 -0
- package/skills/archetype/refs/explore.md +66 -0
- package/skills/archetype/refs/incident.md +149 -0
- package/skills/archetype/refs/migrate.md +170 -0
- package/skills/archetype/refs/modernize.md +187 -0
- package/skills/archetype/refs/review.md +145 -0
- package/skills/archetype/refs/ship.md +117 -0
- package/skills/archetype/refs/specify.md +108 -0
- package/skills/archetype/refs/triage.md +62 -0
- package/skills/classify/SKILL.md +157 -0
- package/skills/data/analysis/SKILL.md +125 -0
- package/skills/data/analysis/refs/templates.md +170 -0
- package/skills/data/data/SKILL.md +118 -0
- package/skills/data/data/refs/examples.md +235 -0
- package/skills/data/ml/SKILL.md +125 -0
- package/skills/data/ml/refs/templates.md +172 -0
- package/skills/data/pipeline/SKILL.md +136 -0
- package/skills/data/pipeline/refs/templates.md +175 -0
- package/skills/data/refs/analyze.md +123 -0
- package/skills/data/refs/data.md +95 -0
- package/skills/data/refs/ml.md +118 -0
- package/skills/data/refs/pipeline.md +92 -0
- package/skills/deliberate/SKILL.md +125 -0
- package/skills/deliberate/refs/architecture-lens.md +37 -0
- package/skills/deliberate/refs/assumptions-lens.md +43 -0
- package/skills/deliberate/refs/code-lens.md +38 -0
- package/skills/deliberate/refs/content-lens.md +37 -0
- package/skills/deliberate/refs/data-lens.md +43 -0
- package/skills/deliberate/refs/design-lens.md +37 -0
- package/skills/deliberate/refs/opportunity-patterns.md +107 -0
- package/skills/deliberate/refs/ops-lens.md +43 -0
- package/skills/deliberate/refs/product-lens.md +46 -0
- package/skills/deliberate/refs/rethink-framework.md +77 -0
- package/skills/deliberate/refs/security-lens.md +47 -0
- package/skills/deliberate/refs/testing-lens.md +45 -0
- package/skills/deliberate/refs/timing-lens.md +42 -0
- package/skills/engineering/architecture/SKILL.md +177 -0
- package/skills/engineering/architecture/refs/adr-template.md +268 -0
- package/skills/engineering/architecture/refs/architecture-template-deployment.md +176 -0
- package/skills/engineering/architecture/refs/architecture-template-design.md +300 -0
- package/skills/engineering/architecture/refs/examples-ecommerce-analytics.md +299 -0
- package/skills/engineering/architecture/refs/examples-saas-trading.md +291 -0
- package/skills/engineering/architecture/refs/patterns-advanced.md +238 -0
- package/skills/engineering/architecture/refs/patterns-structural.md +303 -0
- package/skills/engineering/backend/SKILL.md +102 -0
- package/skills/engineering/backend/refs/checklists.md +146 -0
- package/skills/engineering/backend/refs/patterns.md +181 -0
- package/skills/engineering/debugging/SKILL.md +99 -0
- package/skills/engineering/debugging/refs/patterns.md +248 -0
- package/skills/engineering/debugging/refs/process.md +203 -0
- package/skills/engineering/docs/SKILL.md +97 -0
- package/skills/engineering/engineering/SKILL.md +88 -0
- package/skills/engineering/engineering/refs/checklists.md +91 -0
- package/skills/engineering/engineering/refs/templates.md +71 -0
- package/skills/engineering/frontend/SKILL.md +92 -0
- package/skills/engineering/frontend/refs/checklists.md +96 -0
- package/skills/engineering/frontend/refs/patterns.md +167 -0
- package/skills/engineering/integration/SKILL.md +183 -0
- package/skills/engineering/integration/refs/error-handling-best-practices.md +139 -0
- package/skills/engineering/integration/refs/error-handling-error-classes-typescript.md +212 -0
- package/skills/engineering/integration/refs/error-handling-error-response-format.md +301 -0
- package/skills/engineering/integration/refs/error-handling-retry-strategies.md +190 -0
- package/skills/engineering/integration/refs/event-schemas-best-practices.md +225 -0
- package/skills/engineering/integration/refs/event-schemas-event-naming-conventions.md +303 -0
- package/skills/engineering/integration/refs/event-schemas-event-structure.md +288 -0
- package/skills/engineering/integration/refs/graphql-best-practices.md +138 -0
- package/skills/engineering/integration/refs/graphql-error-handling.md +198 -0
- package/skills/engineering/integration/refs/graphql-graphql-basics.md +197 -0
- package/skills/engineering/integration/refs/graphql-query-examples.md +226 -0
- package/skills/engineering/integration/refs/graphql-schema-design-patterns.md +280 -0
- package/skills/engineering/integration/refs/grpc-grpc-overview.md +246 -0
- package/skills/engineering/integration/refs/grpc-implementation-examples.md +269 -0
- package/skills/engineering/integration/refs/grpc-metadata-headers.md +304 -0
- package/skills/engineering/integration/refs/grpc-testing.md +49 -0
- package/skills/engineering/integration/refs/openapi-template.yaml +682 -0
- package/skills/engineering/integration/refs/resilience-best-practices.md +109 -0
- package/skills/engineering/integration/refs/resilience-circuit-breaker-pattern.md +302 -0
- package/skills/engineering/integration/refs/resilience-rate-limiting.md +245 -0
- package/skills/engineering/integration/refs/resilience-timeout-pattern.md +212 -0
- package/skills/engineering/integration/refs/rest-api-fundamentals.md +299 -0
- package/skills/engineering/integration/refs/rest-api-responses-security.md +302 -0
- package/skills/engineering/integration/refs/versioning-breaking-changes.md +237 -0
- package/skills/engineering/integration/refs/versioning-migration-strategies.md +257 -0
- package/skills/engineering/integration/refs/versioning-versioning-strategies.md +296 -0
- package/skills/engineering/large-scale-migration/SKILL.md +65 -0
- package/skills/engineering/patch/SKILL.md +184 -0
- package/skills/engineering/refs/arch.md +126 -0
- package/skills/engineering/refs/debug.md +142 -0
- package/skills/engineering/refs/docs.md +190 -0
- package/skills/engineering/refs/plan.md +109 -0
- package/skills/engineering/refs/review.md +138 -0
- package/skills/engineering/system-design/SKILL.md +154 -0
- package/skills/engineering/system-design/refs/anti-patterns-big-ball-of-mud.md +254 -0
- package/skills/engineering/system-design/refs/anti-patterns-circular-dependencies.md +241 -0
- package/skills/engineering/system-design/refs/anti-patterns-feature-envy.md +168 -0
- package/skills/engineering/system-design/refs/anti-patterns-god-object.md +247 -0
- package/skills/engineering/system-design/refs/component-template-lifecycle.md +210 -0
- package/skills/engineering/system-design/refs/component-template-maintenance.md +219 -0
- package/skills/engineering/system-design/refs/component-template-structure.md +276 -0
- package/skills/engineering/system-design/refs/dependencies-best-practices.md +260 -0
- package/skills/engineering/system-design/refs/dependencies-dependency-principles.md +295 -0
- package/skills/engineering/system-design/refs/dependencies-dependency-tracking.md +261 -0
- package/skills/engineering/system-design/refs/interface-template-lifecycle.md +211 -0
- package/skills/engineering/system-design/refs/interface-template-maintenance.md +212 -0
- package/skills/engineering/system-design/refs/interface-template-structure.md +269 -0
- package/skills/engineering/system-design/refs/patterns-dependency-injection.md +151 -0
- package/skills/engineering/system-design/refs/patterns-facade-pattern.md +257 -0
- package/skills/engineering/system-design/refs/patterns-layered-pattern.md +204 -0
- package/skills/engineering/system-design/refs/patterns-plugin-architecture.md +229 -0
- package/skills/engineering/unit-test-quality/SKILL.md +194 -0
- package/skills/ground/SKILL.md +130 -0
- package/skills/integration-discovery/SKILL.md +168 -0
- package/skills/integration-discovery/refs/capabilities.md +282 -0
- package/skills/integration-discovery/refs/cli-detection.md +295 -0
- package/skills/integration-discovery/refs/discovery-sources.md +233 -0
- package/skills/integration-discovery/refs/task-patterns.md +206 -0
- package/skills/jam/SKILL.md +45 -0
- package/skills/jam/refs/facilitation-patterns.md +125 -0
- package/skills/jam/refs/quick.md +64 -0
- package/skills/jam/refs/synthesis-patterns.md +114 -0
- package/skills/multi-model/SKILL.md +168 -0
- package/skills/multi-model/refs/aichat.md +119 -0
- package/skills/multi-model/refs/aider.md +100 -0
- package/skills/multi-model/refs/auditability.md +238 -0
- package/skills/multi-model/refs/codex.md +169 -0
- package/skills/multi-model/refs/context.md +306 -0
- package/skills/multi-model/refs/copilot.md +161 -0
- package/skills/multi-model/refs/examples.md +224 -0
- package/skills/multi-model/refs/gemini.md +185 -0
- package/skills/multi-model/refs/goose.md +112 -0
- package/skills/multi-model/refs/llm.md +124 -0
- package/skills/multi-model/refs/opencode.md +196 -0
- package/skills/multi-model/refs/orchestration.md +188 -0
- package/skills/multi-model/refs/pi.md +208 -0
- package/skills/persona/SKILL.md +144 -0
- package/skills/persona/refs/define.md +133 -0
- package/skills/platform/actions/refs/actions.md +114 -0
- package/skills/platform/audit/SKILL.md +174 -0
- package/skills/platform/audit/refs/audit.md +145 -0
- package/skills/platform/audit/refs/checklists-evidence-operations.md +144 -0
- package/skills/platform/audit/refs/checklists-gdpr-pci-evidence.md +213 -0
- package/skills/platform/audit/refs/checklists-soc2-hipaa.md +120 -0
- package/skills/platform/audit/refs/frameworks-gdpr-pci.md +225 -0
- package/skills/platform/audit/refs/frameworks-soc2-hipaa.md +228 -0
- package/skills/platform/compliance/SKILL.md +169 -0
- package/skills/platform/compliance/refs/checklists.md +303 -0
- package/skills/platform/compliance/refs/compliance.md +117 -0
- package/skills/platform/compliance/refs/frameworks.md +282 -0
- package/skills/platform/errors/SKILL.md +183 -0
- package/skills/platform/errors/refs/patterns.md +271 -0
- package/skills/platform/errors/refs/severity.md +264 -0
- package/skills/platform/gate-benchmark-rebaseline/SKILL.md +108 -0
- package/skills/platform/gh/refs/gh.md +105 -0
- package/skills/platform/gh-cli/SKILL.md +120 -0
- package/skills/platform/gh-cli/refs/automation.md +63 -0
- package/skills/platform/gh-cli/refs/gh-ops.md +103 -0
- package/skills/platform/gh-cli/refs/patterns.md +132 -0
- package/skills/platform/gh-cli/scripts/gh_ops.py +454 -0
- package/skills/platform/github-actions/SKILL.md +159 -0
- package/skills/platform/github-actions/refs/security.md +150 -0
- package/skills/platform/github-actions/refs/templates.md +230 -0
- package/skills/platform/github-actions/refs/troubleshooting.md +174 -0
- package/skills/platform/github-actions/scripts/workflow_gen.py +215 -0
- package/skills/platform/gitlab-ci/SKILL.md +140 -0
- package/skills/platform/gitlab-ci/refs/templates.md +223 -0
- package/skills/platform/gitlab-ci/refs/troubleshooting.md +213 -0
- package/skills/platform/glab-cli/SKILL.md +133 -0
- package/skills/platform/glab-cli/refs/ci-debugging.md +95 -0
- package/skills/platform/glab-cli/refs/glab-ops.md +78 -0
- package/skills/platform/glab-cli/refs/patterns.md +131 -0
- package/skills/platform/glab-cli/scripts/glab_ops.py +313 -0
- package/skills/platform/health/SKILL.md +177 -0
- package/skills/platform/health/refs/health.md +72 -0
- package/skills/platform/health/refs/sources.md +302 -0
- package/skills/platform/incident/refs/incident.md +136 -0
- package/skills/platform/infra/refs/infra.md +104 -0
- package/skills/platform/observability/SKILL.md +128 -0
- package/skills/platform/observability/refs/toolchain-discovery.md +243 -0
- package/skills/platform/prereq-doctor/SKILL.md +57 -0
- package/skills/platform/prereq-doctor/refs/tool-registry.md +58 -0
- package/skills/platform/traces/refs/traces.md +101 -0
- package/skills/product/acceptance-criteria/SKILL.md +193 -0
- package/skills/product/acceptance-criteria/refs/ac-anti-patterns.md +291 -0
- package/skills/product/acceptance-criteria/refs/ac-examples.md +277 -0
- package/skills/product/accessibility/SKILL.md +197 -0
- package/skills/product/accessibility/refs/aria-patterns-basics.md +250 -0
- package/skills/product/accessibility/refs/aria-patterns-dynamic.md +187 -0
- package/skills/product/accessibility/refs/aria-patterns-interactive.md +246 -0
- package/skills/product/accessibility/refs/audit-report-findings.md +248 -0
- package/skills/product/accessibility/refs/audit-report-results.md +276 -0
- package/skills/product/accessibility/refs/common-violations-html-css.md +270 -0
- package/skills/product/accessibility/refs/common-violations-interactive.md +303 -0
- package/skills/product/accessibility/refs/keyboard-testing-basics.md +222 -0
- package/skills/product/accessibility/refs/keyboard-testing-patterns.md +173 -0
- package/skills/product/accessibility/refs/screen-reader-testing-advanced.md +294 -0
- package/skills/product/accessibility/refs/screen-reader-testing-commands.md +255 -0
- package/skills/product/accessibility/refs/wcag-checklist.md +262 -0
- package/skills/product/analyze/SKILL.md +164 -0
- package/skills/product/analyze/refs/algorithms.md +238 -0
- package/skills/product/analyze/refs/sentiment-patterns.md +180 -0
- package/skills/product/imagery/SKILL.md +97 -0
- package/skills/product/imagery/alter/SKILL.md +105 -0
- package/skills/product/imagery/alter/refs/editing-reference.md +146 -0
- package/skills/product/imagery/create/SKILL.md +109 -0
- package/skills/product/imagery/create/refs/prompt-engineering.md +112 -0
- package/skills/product/imagery/create/refs/provider-reference.md +219 -0
- package/skills/product/imagery/review/SKILL.md +101 -0
- package/skills/product/imagery/review/refs/analysis-lenses.md +136 -0
- package/skills/product/imagery/review/refs/quality-gates.md +153 -0
- package/skills/product/imagery/scripts/analyze.sh +23 -0
- package/skills/product/imagery/scripts/edit.sh +14 -0
- package/skills/product/imagery/scripts/generate.sh +13 -0
- package/skills/product/imagery/scripts/provider.py +787 -0
- package/skills/product/listen/SKILL.md +175 -0
- package/skills/product/listen/refs/channels.md +220 -0
- package/skills/product/mockup/SKILL.md +106 -0
- package/skills/product/mockup/refs/templates.md +95 -0
- package/skills/product/refs/a11y.md +109 -0
- package/skills/product/refs/acceptance.md +79 -0
- package/skills/product/refs/align.md +67 -0
- package/skills/product/refs/analyze.md +77 -0
- package/skills/product/refs/elicit.md +67 -0
- package/skills/product/refs/listen.md +58 -0
- package/skills/product/refs/mockup.md +77 -0
- package/skills/product/refs/screenshot.md +59 -0
- package/skills/product/refs/strategy.md +77 -0
- package/skills/product/refs/synthesize.md +54 -0
- package/skills/product/refs/ux-review.md +68 -0
- package/skills/product/refs/ux.md +101 -0
- package/skills/product/requirements-analysis/SKILL.md +136 -0
- package/skills/product/requirements-analysis/refs/requirements-example-auth.md +264 -0
- package/skills/product/requirements-analysis/refs/requirements-example-export-integration.md +88 -0
- package/skills/product/requirements-analysis/refs/requirements-output-format-template.md +247 -0
- package/skills/product/requirements-analysis/refs/user-story-guide.md +296 -0
- package/skills/product/requirements-graph/SKILL.md +155 -0
- package/skills/product/requirements-graph/refs/examples.md +223 -0
- package/skills/product/requirements-graph/refs/schema.md +162 -0
- package/skills/product/requirements-migrate/SKILL.md +90 -0
- package/skills/product/requirements-navigate/SKILL.md +141 -0
- package/skills/product/requirements-navigate/refs/meta-templates.md +141 -0
- package/skills/product/screenshot/SKILL.md +147 -0
- package/skills/product/strategy/SKILL.md +198 -0
- package/skills/product/strategy/refs/frameworks.md +295 -0
- package/skills/product/strategy/refs/templates-competitive-market.md +299 -0
- package/skills/product/strategy/refs/templates-roi-value.md +207 -0
- package/skills/product/synthesize/SKILL.md +116 -0
- package/skills/product/synthesize/refs/journey-mapping.md +212 -0
- package/skills/product/synthesize/refs/prioritization.md +193 -0
- package/skills/product/ux-review/SKILL.md +164 -0
- package/skills/product/visual-direction/SKILL.md +137 -0
- package/skills/product/visual-review/SKILL.md +131 -0
- package/skills/runtime-exec/SKILL.md +138 -0
- package/skills/search/codebase-narrator/SKILL.md +131 -0
- package/skills/search/codebase-narrator/refs/output-template.md +100 -0
- package/skills/smaht/SKILL.md +72 -0
- package/skills/smaht/discovery/SKILL.md +65 -0
- package/skills/smaht/intent/SKILL.md +89 -0
- package/skills/smaht/propose-skills/SKILL.md +142 -0
- package/skills/smaht/refs/state.md +76 -0
- package/skills/swarm/SKILL.md +132 -0
- package/skills/swarm/refs/fan-out.md +104 -0
- package/skills/swarm/refs/independent-verification.md +86 -0
- package/skills/swarm/refs/receipts-and-evidence.md +69 -0
- package/skills/swarm/refs/recon-synthesis.md +87 -0
- package/skills/swarm/refs/ship-discipline.md +90 -0
- package/skills/wickedizer/SKILL.md +147 -0
- package/skills/wickedizer/refs/artifact-types.md +238 -0
- package/skills/wickedizer/refs/complexity.md +278 -0
- package/skills/wickedizer/refs/de-ai-pass.md +140 -0
- package/skills/wickedizer/refs/failure-modes.md +249 -0
- package/skills/wickedizer/refs/patterns.md +282 -0
- package/skills/wickedizer/refs/review.md +221 -0
- package/skills/wickedizer/refs/structure.md +282 -0
- package/skills/wickedizer/refs/voice-profile.md +125 -0
- package/skills/workflow/SKILL.md +132 -0
- package/skills/workflow/refs/archetype-adjustments.md +205 -0
- package/skills/workflow/refs/evidence.md +58 -0
- package/skills/workflow/refs/integration.md +130 -0
- package/skills/workflow/refs/risk-dimension-signals.md +260 -0
- package/skills/workflow/refs/scoring-rubric.md +49 -0
- package/skills/workflow/refs/signal-keywords.md +176 -0
- package/skills/workflow/refs/specialist-routing-rules.md +159 -0
- package/skills/worktrees/SKILL.md +87 -0
- package/skills/worktrees/refs/recipes.md +96 -0
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
---
|
|
2
|
+
phase_relevance: ["clarify", "design", "review"]
|
|
3
|
+
archetype_relevance: ["*"]
|
|
4
|
+
---
|
|
5
|
+
# Acceptance Criteria Anti-Patterns
|
|
6
|
+
|
|
7
|
+
Common mistakes to avoid when writing acceptance criteria.
|
|
8
|
+
|
|
9
|
+
## Anti-Pattern 1: Vague Language
|
|
10
|
+
|
|
11
|
+
### Bad Example
|
|
12
|
+
```
|
|
13
|
+
AC1: User can log in successfully
|
|
14
|
+
AC2: Error is shown when something goes wrong
|
|
15
|
+
AC3: System performs well under load
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**Problems**:
|
|
19
|
+
- "Successfully" - what does success look like?
|
|
20
|
+
- "Something goes wrong" - what specific error condition?
|
|
21
|
+
- "Performs well" - what metric? What threshold?
|
|
22
|
+
|
|
23
|
+
### Good Example
|
|
24
|
+
```
|
|
25
|
+
AC1: Given valid email/password
|
|
26
|
+
When user submits login form
|
|
27
|
+
Then user is redirected to dashboard within 2 seconds
|
|
28
|
+
|
|
29
|
+
AC2: Given invalid password
|
|
30
|
+
When user submits login form
|
|
31
|
+
Then error message "Invalid credentials" is displayed
|
|
32
|
+
And login form remains visible
|
|
33
|
+
|
|
34
|
+
AC3: Given 1000 concurrent users
|
|
35
|
+
When users make requests
|
|
36
|
+
Then 95th percentile response time < 2 seconds
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Anti-Pattern 2: Implementation Details
|
|
40
|
+
|
|
41
|
+
### Bad Example
|
|
42
|
+
```
|
|
43
|
+
AC1: User service calls authentication API with JWT token
|
|
44
|
+
AC2: Database transaction is committed after validation
|
|
45
|
+
AC3: React component re-renders when state changes
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Problems**:
|
|
49
|
+
- Specifies HOW instead of WHAT
|
|
50
|
+
- Ties acceptance to implementation
|
|
51
|
+
- Not testable from user perspective
|
|
52
|
+
|
|
53
|
+
### Good Example
|
|
54
|
+
```
|
|
55
|
+
AC1: Given valid credentials
|
|
56
|
+
When user submits login
|
|
57
|
+
Then user gains access to protected resources
|
|
58
|
+
|
|
59
|
+
AC2: Given valid data
|
|
60
|
+
When user saves record
|
|
61
|
+
Then record is persisted and retrievable
|
|
62
|
+
|
|
63
|
+
AC3: Given data update
|
|
64
|
+
When change occurs
|
|
65
|
+
Then UI reflects updated data within 1 second
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Anti-Pattern 3: Missing Context (Given)
|
|
69
|
+
|
|
70
|
+
### Bad Example
|
|
71
|
+
```
|
|
72
|
+
AC1: When user clicks save, then record is saved
|
|
73
|
+
AC2: When error occurs, then message is shown
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Problems**:
|
|
77
|
+
- No precondition specified
|
|
78
|
+
- Ambiguous starting state
|
|
79
|
+
- Hard to reproduce for testing
|
|
80
|
+
|
|
81
|
+
### Good Example
|
|
82
|
+
```
|
|
83
|
+
AC1: Given user on edit form with valid changes
|
|
84
|
+
When user clicks save
|
|
85
|
+
Then record is updated in database
|
|
86
|
+
|
|
87
|
+
AC2: Given user on form with required field empty
|
|
88
|
+
When user clicks save
|
|
89
|
+
Then error message "Field X is required" is shown
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Anti-Pattern 4: Compound Criteria
|
|
93
|
+
|
|
94
|
+
### Bad Example
|
|
95
|
+
```
|
|
96
|
+
AC1: User can register, log in, update profile, and delete account
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**Problems**:
|
|
100
|
+
- Multiple behaviors in one criterion
|
|
101
|
+
- Hard to test atomically
|
|
102
|
+
- Unclear if partial success is acceptable
|
|
103
|
+
|
|
104
|
+
### Good Example
|
|
105
|
+
```
|
|
106
|
+
AC1: Given valid registration data
|
|
107
|
+
When user submits registration form
|
|
108
|
+
Then account is created and confirmation email sent
|
|
109
|
+
|
|
110
|
+
AC2: Given valid credentials
|
|
111
|
+
When user submits login
|
|
112
|
+
Then user is authenticated and redirected to dashboard
|
|
113
|
+
|
|
114
|
+
AC3: Given logged-in user with profile changes
|
|
115
|
+
When user saves profile
|
|
116
|
+
Then changes are persisted and confirmation shown
|
|
117
|
+
|
|
118
|
+
AC4: Given logged-in user
|
|
119
|
+
When user requests account deletion
|
|
120
|
+
Then account is deactivated and confirmation email sent
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Anti-Pattern 5: Untestable Outcomes
|
|
124
|
+
|
|
125
|
+
### Bad Example
|
|
126
|
+
```
|
|
127
|
+
AC1: System is user-friendly
|
|
128
|
+
AC2: Design is intuitive
|
|
129
|
+
AC3: Performance is acceptable
|
|
130
|
+
AC4: Code is maintainable
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**Problems**:
|
|
134
|
+
- Subjective criteria
|
|
135
|
+
- No measurable outcome
|
|
136
|
+
- Cannot verify programmatically
|
|
137
|
+
|
|
138
|
+
### Good Example
|
|
139
|
+
```
|
|
140
|
+
AC1: Given new user on home page
|
|
141
|
+
When user attempts common task
|
|
142
|
+
Then task is completable without help documentation
|
|
143
|
+
And 80% of test users complete task in < 2 minutes
|
|
144
|
+
|
|
145
|
+
AC2: Given user on navigation menu
|
|
146
|
+
When user looks for feature X
|
|
147
|
+
Then feature X is findable in < 3 clicks
|
|
148
|
+
And labeled with expected terminology
|
|
149
|
+
|
|
150
|
+
AC3: Given 1000 concurrent requests
|
|
151
|
+
When system is under load
|
|
152
|
+
Then p95 response time < 2 seconds
|
|
153
|
+
And error rate < 1%
|
|
154
|
+
|
|
155
|
+
AC4: Given new developer on codebase
|
|
156
|
+
When developer adds new feature
|
|
157
|
+
Then code follows documented patterns
|
|
158
|
+
And passes automated linting checks
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Anti-Pattern 6: Testing Instructions Instead of Acceptance
|
|
162
|
+
|
|
163
|
+
### Bad Example
|
|
164
|
+
```
|
|
165
|
+
AC1: QE should test happy path and error cases
|
|
166
|
+
AC2: Verify all edge cases are handled
|
|
167
|
+
AC3: Run load tests with 1000 users
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**Problems**:
|
|
171
|
+
- Describes test process, not acceptance
|
|
172
|
+
- Tells QE what to do, not what success is
|
|
173
|
+
- Belongs in test plan, not acceptance criteria
|
|
174
|
+
|
|
175
|
+
### Good Example
|
|
176
|
+
```
|
|
177
|
+
AC1: Given valid input
|
|
178
|
+
When user performs action
|
|
179
|
+
Then expected outcome occurs
|
|
180
|
+
|
|
181
|
+
AC2: Given invalid input
|
|
182
|
+
When user performs action
|
|
183
|
+
Then appropriate error message is shown
|
|
184
|
+
|
|
185
|
+
AC3: Given 1000 concurrent users
|
|
186
|
+
When system is under load
|
|
187
|
+
Then system remains responsive (p95 < 2s)
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## Anti-Pattern 7: Missing "Then" (No Observable Outcome)
|
|
191
|
+
|
|
192
|
+
### Bad Example
|
|
193
|
+
```
|
|
194
|
+
AC1: Given user on form, when user enters data
|
|
195
|
+
AC2: Given valid credentials, when user logs in
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
**Problems**:
|
|
199
|
+
- No expected outcome specified
|
|
200
|
+
- Cannot determine success/failure
|
|
201
|
+
- Incomplete specification
|
|
202
|
+
|
|
203
|
+
### Good Example
|
|
204
|
+
```
|
|
205
|
+
AC1: Given user on form
|
|
206
|
+
When user enters data
|
|
207
|
+
Then data is validated in real-time with visual feedback
|
|
208
|
+
|
|
209
|
+
AC2: Given valid credentials
|
|
210
|
+
When user logs in
|
|
211
|
+
Then user is authenticated and redirected to dashboard
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
## Anti-Pattern 8: Too Granular (Over-Specification)
|
|
215
|
+
|
|
216
|
+
### Bad Example
|
|
217
|
+
```
|
|
218
|
+
AC1: Button text is "Submit" in 14pt Arial font
|
|
219
|
+
AC2: Error message is red with hex code #FF0000
|
|
220
|
+
AC3: Input field border is 1px solid gray
|
|
221
|
+
AC4: Padding is exactly 16px on all sides
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
**Problems**:
|
|
225
|
+
- Design details, not behavior
|
|
226
|
+
- Brittle (breaks with design changes)
|
|
227
|
+
- Not user-facing value
|
|
228
|
+
|
|
229
|
+
### Good Example
|
|
230
|
+
```
|
|
231
|
+
AC1: Given user on form
|
|
232
|
+
When user clicks primary action button
|
|
233
|
+
Then form is submitted
|
|
234
|
+
|
|
235
|
+
AC2: Given validation error
|
|
236
|
+
When error is displayed
|
|
237
|
+
Then error message is visually distinct from normal text
|
|
238
|
+
And clearly associated with the problematic field
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
## Anti-Pattern 9: No Prioritization
|
|
242
|
+
|
|
243
|
+
**Problem**: All criteria treated equally — unclear what's critical vs nice-to-have, hard to make trade-off decisions.
|
|
244
|
+
|
|
245
|
+
**Fix**: Add `[P0]`/`[P1]`/`[P2]` labels to each criterion. Login = P0, data export = P1, theme toggle = P2.
|
|
246
|
+
|
|
247
|
+
## Anti-Pattern 10: Ambiguous Pronouns and References
|
|
248
|
+
|
|
249
|
+
### Bad Example
|
|
250
|
+
```
|
|
251
|
+
AC1: When they click it, then it updates
|
|
252
|
+
AC2: When this happens, that should occur
|
|
253
|
+
AC3: System does the right thing
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
**Problems**:
|
|
257
|
+
- Unclear who/what is referenced
|
|
258
|
+
- Ambiguous actions and outcomes
|
|
259
|
+
- Not specific enough to implement or test
|
|
260
|
+
|
|
261
|
+
### Good Example
|
|
262
|
+
```
|
|
263
|
+
AC1: Given user viewing record detail page
|
|
264
|
+
When user clicks "Save" button
|
|
265
|
+
Then record is updated in database
|
|
266
|
+
|
|
267
|
+
AC2: Given validation error occurs
|
|
268
|
+
When form is submitted
|
|
269
|
+
Then error message is displayed below the invalid field
|
|
270
|
+
|
|
271
|
+
AC3: Given user submits form with valid data
|
|
272
|
+
When server receives request
|
|
273
|
+
Then HTTP 200 response is returned with created resource
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
## Checklist: Avoid These Anti-Patterns
|
|
277
|
+
|
|
278
|
+
- [ ] No vague language ("successfully", "properly", "well")
|
|
279
|
+
- [ ] No implementation details (APIs, databases, frameworks)
|
|
280
|
+
- [ ] Every criterion has Given (context)
|
|
281
|
+
- [ ] One testable behavior per criterion
|
|
282
|
+
- [ ] Observable, measurable outcomes
|
|
283
|
+
- [ ] Describes acceptance, not test instructions
|
|
284
|
+
- [ ] Always includes Then (expected outcome)
|
|
285
|
+
- [ ] Behavioral, not design specifications
|
|
286
|
+
- [ ] Prioritized (P0/P1/P2)
|
|
287
|
+
- [ ] No ambiguous pronouns ("it", "they", "this")
|
|
288
|
+
|
|
289
|
+
## Summary
|
|
290
|
+
|
|
291
|
+
Good ACs are: **Specific** (clear Given/When/Then), **Testable** (observable outcome), **Behavioral** (what, not how), **Independent** (one thing per criterion), **Prioritized** (P0/P1/P2 indicated).
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
---
|
|
2
|
+
phase_relevance: ["clarify", "design", "review"]
|
|
3
|
+
archetype_relevance: ["*"]
|
|
4
|
+
---
|
|
5
|
+
# Acceptance Criteria Examples
|
|
6
|
+
|
|
7
|
+
Comprehensive examples of well-written acceptance criteria across different domains.
|
|
8
|
+
|
|
9
|
+
## Authentication & Authorization
|
|
10
|
+
|
|
11
|
+
### User Login
|
|
12
|
+
```
|
|
13
|
+
AC1: Given valid email and password
|
|
14
|
+
When user submits login form
|
|
15
|
+
Then user is redirected to dashboard and session is created
|
|
16
|
+
|
|
17
|
+
AC2: Given invalid password
|
|
18
|
+
When user submits login form
|
|
19
|
+
Then error message "Invalid credentials" is displayed
|
|
20
|
+
And login form remains visible
|
|
21
|
+
And no session is created
|
|
22
|
+
|
|
23
|
+
AC3: Given account locked after 3 failed attempts
|
|
24
|
+
When user submits login form
|
|
25
|
+
Then error message "Account locked. Try again in 15 minutes" is displayed
|
|
26
|
+
And account remains locked for 15 minutes
|
|
27
|
+
|
|
28
|
+
AC4: Given user successfully logged in
|
|
29
|
+
When 30 minutes of inactivity pass
|
|
30
|
+
Then user is logged out automatically
|
|
31
|
+
And redirected to login page with message "Session expired"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Role-Based Access
|
|
35
|
+
```
|
|
36
|
+
AC1: Given user has "admin" role
|
|
37
|
+
When user navigates to admin panel
|
|
38
|
+
Then admin panel is displayed with full functionality
|
|
39
|
+
|
|
40
|
+
AC2: Given user has "viewer" role
|
|
41
|
+
When user attempts to access admin panel
|
|
42
|
+
Then access denied message is displayed
|
|
43
|
+
And user is redirected to home page
|
|
44
|
+
|
|
45
|
+
AC3: Given user has "editor" role
|
|
46
|
+
When user views content list
|
|
47
|
+
Then edit and delete buttons are visible for user's own content only
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Data Management
|
|
51
|
+
|
|
52
|
+
### Create Record
|
|
53
|
+
```
|
|
54
|
+
AC1: Given user on create form with all required fields filled
|
|
55
|
+
When user clicks "Save"
|
|
56
|
+
Then record is created in database
|
|
57
|
+
And success message "Record created successfully" is displayed
|
|
58
|
+
And user is redirected to record detail page
|
|
59
|
+
|
|
60
|
+
AC2: Given user on create form with required field empty
|
|
61
|
+
When user clicks "Save"
|
|
62
|
+
Then error message "Field X is required" is displayed
|
|
63
|
+
And form is not submitted
|
|
64
|
+
And user remains on create page
|
|
65
|
+
|
|
66
|
+
AC3: Given user enters data exceeding field length limit
|
|
67
|
+
When user clicks "Save"
|
|
68
|
+
Then error message "Field X must be less than N characters" is displayed
|
|
69
|
+
And form is not submitted
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Search Functionality
|
|
73
|
+
```
|
|
74
|
+
AC1: Given user enters search term matching 5 records
|
|
75
|
+
When user clicks "Search"
|
|
76
|
+
Then 5 matching records are displayed in results list
|
|
77
|
+
And results are sorted by relevance
|
|
78
|
+
|
|
79
|
+
AC2: Given user enters search term matching 0 records
|
|
80
|
+
When user clicks "Search"
|
|
81
|
+
Then message "No results found" is displayed
|
|
82
|
+
And search suggestions are shown
|
|
83
|
+
|
|
84
|
+
AC3: Given user enters search term matching 1000+ records
|
|
85
|
+
When user clicks "Search"
|
|
86
|
+
Then first 20 results are displayed
|
|
87
|
+
And pagination controls are shown
|
|
88
|
+
And total count "1000+ results" is displayed
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## API Endpoints
|
|
92
|
+
|
|
93
|
+
### GET Request
|
|
94
|
+
```
|
|
95
|
+
AC1: Given valid authentication token
|
|
96
|
+
When GET /api/users/{id} is called with existing user ID
|
|
97
|
+
Then HTTP 200 response is returned
|
|
98
|
+
And response body contains user object with expected schema
|
|
99
|
+
And response time is less than 200ms
|
|
100
|
+
|
|
101
|
+
AC2: Given valid authentication token
|
|
102
|
+
When GET /api/users/{id} is called with non-existent user ID
|
|
103
|
+
Then HTTP 404 response is returned
|
|
104
|
+
And response body contains error message "User not found"
|
|
105
|
+
|
|
106
|
+
AC3: Given invalid or expired authentication token
|
|
107
|
+
When GET /api/users/{id} is called
|
|
108
|
+
Then HTTP 401 response is returned
|
|
109
|
+
And response body contains error message "Unauthorized"
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### POST Request
|
|
113
|
+
```
|
|
114
|
+
AC1: Given valid authentication and valid request body
|
|
115
|
+
When POST /api/users is called
|
|
116
|
+
Then HTTP 201 response is returned
|
|
117
|
+
And response body contains created user object with ID
|
|
118
|
+
And user is persisted in database
|
|
119
|
+
|
|
120
|
+
AC2: Given valid authentication but invalid request body (missing required field)
|
|
121
|
+
When POST /api/users is called
|
|
122
|
+
Then HTTP 400 response is returned
|
|
123
|
+
And response body contains validation error details
|
|
124
|
+
And no user is created in database
|
|
125
|
+
|
|
126
|
+
AC3: Given valid authentication but duplicate email
|
|
127
|
+
When POST /api/users is called
|
|
128
|
+
Then HTTP 409 response is returned
|
|
129
|
+
And response body contains error "Email already exists"
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## E-commerce
|
|
133
|
+
|
|
134
|
+
### Add to Cart
|
|
135
|
+
```
|
|
136
|
+
AC1: Given user viewing product with stock available
|
|
137
|
+
When user clicks "Add to Cart"
|
|
138
|
+
Then product is added to cart
|
|
139
|
+
And cart icon shows updated item count
|
|
140
|
+
And success message "Added to cart" is displayed
|
|
141
|
+
|
|
142
|
+
AC2: Given user viewing product with 0 stock
|
|
143
|
+
When user views product page
|
|
144
|
+
Then "Add to Cart" button is disabled
|
|
145
|
+
And "Out of Stock" message is displayed
|
|
146
|
+
And notification signup option is shown
|
|
147
|
+
|
|
148
|
+
AC3: Given user adds item already in cart
|
|
149
|
+
When user clicks "Add to Cart"
|
|
150
|
+
Then cart quantity for that item is incremented by 1
|
|
151
|
+
And cart total is updated
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Checkout Process
|
|
155
|
+
```
|
|
156
|
+
AC1: Given user has items in cart and valid payment method
|
|
157
|
+
When user completes checkout
|
|
158
|
+
Then order is created with "Pending" status
|
|
159
|
+
And payment is processed
|
|
160
|
+
And confirmation email is sent
|
|
161
|
+
And user is redirected to order confirmation page
|
|
162
|
+
|
|
163
|
+
AC2: Given user has items in cart but payment fails
|
|
164
|
+
When user completes checkout
|
|
165
|
+
Then order is created with "Payment Failed" status
|
|
166
|
+
And user sees error message with reason
|
|
167
|
+
And cart is not cleared
|
|
168
|
+
And user can retry payment
|
|
169
|
+
|
|
170
|
+
AC3: Given user has items in cart but one item became out of stock
|
|
171
|
+
When user proceeds to checkout
|
|
172
|
+
Then checkout is blocked
|
|
173
|
+
And message "Item X is no longer available" is displayed
|
|
174
|
+
And item is removed from cart
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## Non-Functional Requirements
|
|
178
|
+
|
|
179
|
+
### Performance
|
|
180
|
+
```
|
|
181
|
+
AC1: Given 1000 concurrent users
|
|
182
|
+
When users make API requests
|
|
183
|
+
Then 95th percentile response time is less than 2 seconds
|
|
184
|
+
And no requests fail due to timeout
|
|
185
|
+
|
|
186
|
+
AC2: Given database with 1M records
|
|
187
|
+
When user performs search query
|
|
188
|
+
Then results are returned in less than 1 second
|
|
189
|
+
And pagination is responsive
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Security
|
|
193
|
+
```
|
|
194
|
+
AC1: Given user enters password
|
|
195
|
+
When password is transmitted to server
|
|
196
|
+
Then password is encrypted using TLS
|
|
197
|
+
And password is hashed using bcrypt before storage
|
|
198
|
+
|
|
199
|
+
AC2: Given user attempts SQL injection in input field
|
|
200
|
+
When form is submitted
|
|
201
|
+
Then malicious input is sanitized
|
|
202
|
+
And no SQL injection occurs
|
|
203
|
+
And attempt is logged
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Usability
|
|
207
|
+
```
|
|
208
|
+
AC1: Given user on mobile device
|
|
209
|
+
When user views application
|
|
210
|
+
Then UI is responsive and fits screen width
|
|
211
|
+
And all interactive elements are tappable (min 44x44px)
|
|
212
|
+
And text is readable without zooming
|
|
213
|
+
|
|
214
|
+
AC2: Given user using screen reader
|
|
215
|
+
When user navigates application
|
|
216
|
+
Then all images have alt text
|
|
217
|
+
And form fields have associated labels
|
|
218
|
+
And keyboard navigation works for all interactive elements
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
## Edge Cases
|
|
222
|
+
|
|
223
|
+
### Empty States
|
|
224
|
+
```
|
|
225
|
+
AC1: Given new user with empty inbox
|
|
226
|
+
When user views inbox
|
|
227
|
+
Then empty state illustration is displayed
|
|
228
|
+
And message "No messages yet" is shown
|
|
229
|
+
And suggestion to compose first message is displayed
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### Boundary Values
|
|
233
|
+
```
|
|
234
|
+
AC1: Given input field with max length of 100 characters
|
|
235
|
+
When user enters exactly 100 characters
|
|
236
|
+
Then input is accepted
|
|
237
|
+
And no error is shown
|
|
238
|
+
|
|
239
|
+
AC2: Given input field with max length of 100 characters
|
|
240
|
+
When user enters 101 characters
|
|
241
|
+
Then only first 100 characters are accepted
|
|
242
|
+
Or error message "Maximum 100 characters" is shown
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### Concurrent Access
|
|
246
|
+
```
|
|
247
|
+
AC1: Given two users editing same record simultaneously
|
|
248
|
+
When first user saves changes
|
|
249
|
+
Then changes are saved
|
|
250
|
+
And second user receives notification "Record updated by another user"
|
|
251
|
+
And second user must refresh to see latest version
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
## Common Patterns
|
|
255
|
+
|
|
256
|
+
### CRUD Operations Template
|
|
257
|
+
```
|
|
258
|
+
CREATE:
|
|
259
|
+
- Given valid data, When submit, Then created and confirmed
|
|
260
|
+
- Given invalid data, When submit, Then error shown and not created
|
|
261
|
+
- Given duplicate, When submit, Then conflict error shown
|
|
262
|
+
|
|
263
|
+
READ:
|
|
264
|
+
- Given existing ID, When request, Then data returned
|
|
265
|
+
- Given non-existent ID, When request, Then 404 error
|
|
266
|
+
- Given unauthorized, When request, Then 401 error
|
|
267
|
+
|
|
268
|
+
UPDATE:
|
|
269
|
+
- Given valid changes, When submit, Then updated and confirmed
|
|
270
|
+
- Given invalid data, When submit, Then error shown and not updated
|
|
271
|
+
- Given stale data, When submit, Then conflict error shown
|
|
272
|
+
|
|
273
|
+
DELETE:
|
|
274
|
+
- Given existing ID, When delete, Then removed and confirmed
|
|
275
|
+
- Given non-existent ID, When delete, Then 404 error
|
|
276
|
+
- Given dependencies, When delete, Then error shown and not deleted
|
|
277
|
+
```
|