aiox-core 5.0.2 → 5.0.3
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/.aiox-core/data/entity-registry.yaml +748 -763
- package/.aiox-core/install-manifest.yaml +4 -4
- package/package.json +6 -1
- package/pro/feature-registry.yaml +223 -0
- package/pro/package.json +39 -0
- package/pro/pro-config.yaml +63 -0
- package/pro/squads/README.md +24 -0
- package/pro/squads/design/HEADLINE.md +3 -0
- package/pro/squads/design/README.md +109 -0
- package/pro/squads/design/agents/brad-frost.md +1097 -0
- package/pro/squads/design/agents/dan-mall.md +857 -0
- package/pro/squads/design/agents/dave-malouf.md +2272 -0
- package/pro/squads/design/agents/design-chief.md +114 -0
- package/pro/squads/design/agents/ds-foundations-lead.md +194 -0
- package/pro/squads/design/agents/ds-token-architect.md +361 -0
- package/pro/squads/design/agents/nano-banana-generator.md +162 -0
- package/pro/squads/design/agents/storybook-expert.md +809 -0
- package/pro/squads/design/checklists/atomic-refactor-checklist.md +299 -0
- package/pro/squads/design/checklists/component-adaptation-checklist.md +81 -0
- package/pro/squads/design/checklists/design-fidelity-checklist.md +283 -0
- package/pro/squads/design/checklists/design-handoff-checklist.md +55 -0
- package/pro/squads/design/checklists/design-team-health-checklist.md +454 -0
- package/pro/squads/design/checklists/designops-maturity-checklist.md +518 -0
- package/pro/squads/design/checklists/ds-a11y-release-gate-checklist.md +45 -0
- package/pro/squads/design/checklists/ds-accessibility-wcag-checklist.md +147 -0
- package/pro/squads/design/checklists/ds-component-quality-checklist.md +150 -0
- package/pro/squads/design/checklists/ds-critical-eye-review-checklist.md +147 -0
- package/pro/squads/design/checklists/ds-migration-readiness-checklist.md +99 -0
- package/pro/squads/design/checklists/ds-pattern-audit-checklist.md +164 -0
- package/pro/squads/design/checklists/reading-accessibility-checklist.md +275 -0
- package/pro/squads/design/checklists/token-mapping-checklist.md +107 -0
- package/pro/squads/design/config/coding-standards.md +286 -0
- package/pro/squads/design/config/source-tree.md +59 -0
- package/pro/squads/design/config/tech-stack.md +48 -0
- package/pro/squads/design/config.yaml +204 -0
- package/pro/squads/design/data/agentic-design-systems-guide.md +46 -0
- package/pro/squads/design/data/agentic-ds-principles.md +100 -0
- package/pro/squads/design/data/atomic-design-principles.md +108 -0
- package/pro/squads/design/data/atomic-refactor-rules.md +582 -0
- package/pro/squads/design/data/base-component-specs.md +972 -0
- package/pro/squads/design/data/brad-frost-analysis-extract-implicit.yaml +270 -0
- package/pro/squads/design/data/brad-frost-analysis-find-0.8.yaml +176 -0
- package/pro/squads/design/data/brad-frost-analysis-qa-report.yaml +168 -0
- package/pro/squads/design/data/brad-frost-dna.yaml +713 -0
- package/pro/squads/design/data/capability-tools.yaml +124 -0
- package/pro/squads/design/data/component-adaptation-changelog.md +318 -0
- package/pro/squads/design/data/consolidation-algorithms.md +168 -0
- package/pro/squads/design/data/critical-eye-scoring-rules.yaml +240 -0
- package/pro/squads/design/data/design-token-best-practices.md +107 -0
- package/pro/squads/design/data/design-tokens-spec.yaml +418 -0
- package/pro/squads/design/data/ds-reference-architectures.md +93 -0
- package/pro/squads/design/data/f2-qa-report.md +168 -0
- package/pro/squads/design/data/f3-derived-components-changelog.md +100 -0
- package/pro/squads/design/data/f3-qa-report.md +208 -0
- package/pro/squads/design/data/figma-base-components-raw.md +102 -0
- package/pro/squads/design/data/figma-tokens-raw.md +1549 -0
- package/pro/squads/design/data/fluent2-design-principles.md +114 -0
- package/pro/squads/design/data/high-retention-reading-guide.md +349 -0
- package/pro/squads/design/data/integration-patterns.md +207 -0
- package/pro/squads/design/data/internal-quality-chain.yaml +48 -0
- package/pro/squads/design/data/motion-tokens-guide.md +202 -0
- package/pro/squads/design/data/roi-calculation-guide.md +142 -0
- package/pro/squads/design/data/token-mapping-reference.md +213 -0
- package/pro/squads/design/data/w3c-dtcg-spec-reference.md +149 -0
- package/pro/squads/design/data/wcag-compliance-guide.md +267 -0
- package/pro/squads/design/docs/AUDIT_REPORT.md +97 -0
- package/pro/squads/design/docs/DS-CURATION-PIPELINE-PROPOSAL.md +577 -0
- package/pro/squads/design/docs/UPGRADE_PLAN.md +618 -0
- package/pro/squads/design/docs/brad-frost-research-validation.md +372 -0
- package/pro/squads/design/docs/dave-malouf-research-validation.md +391 -0
- package/pro/squads/design/docs/tool-discovery-report.md +87 -0
- package/pro/squads/design/docs/tool-integration-plan.md +44 -0
- package/pro/squads/design/protocols/ai-first-governance.md +56 -0
- package/pro/squads/design/protocols/governance-execution-boundary.md +59 -0
- package/pro/squads/design/protocols/handoff.md +60 -0
- package/pro/squads/design/rules/.claude-rules.md +88 -0
- package/pro/squads/design/scripts/design-system/curate_colors.cjs +447 -0
- package/pro/squads/design/scripts/design-system/curate_components.cjs +217 -0
- package/pro/squads/design/scripts/design-system/curate_radius.cjs +190 -0
- package/pro/squads/design/scripts/design-system/curate_shadows.cjs +208 -0
- package/pro/squads/design/scripts/design-system/curate_spacing.cjs +243 -0
- package/pro/squads/design/scripts/design-system/curate_typography.cjs +404 -0
- package/pro/squads/design/scripts/design-system/design-system-metadata.test.js +49 -0
- package/pro/squads/design/scripts/design-system/design_manifest_lib.cjs +142 -0
- package/pro/squads/design/scripts/design-system/fetch_page_images.cjs +195 -0
- package/pro/squads/design/scripts/design-system/generate_components_metadata.cjs +114 -0
- package/pro/squads/design/scripts/design-system/generate_curation_report.cjs +258 -0
- package/pro/squads/design/scripts/design-system/generate_tokens.cjs +342 -0
- package/pro/squads/design/scripts/design-system/sync_design_manifest.cjs +27 -0
- package/pro/squads/design/scripts/design-system/test_mcp_tools.cjs +232 -0
- package/pro/squads/design/scripts/design-system/validate_components_metadata.cjs +96 -0
- package/pro/squads/design/scripts/design-system/validate_curation.cjs +226 -0
- package/pro/squads/design/scripts/design-system/validate_design_manifest_drift.cjs +72 -0
- package/pro/squads/design/scripts/design-system/validate_mcp_skeleton.cjs +38 -0
- package/pro/squads/design/scripts/design-system/validate_registry.cjs +186 -0
- package/pro/squads/design/scripts/design-system/validate_task_checklist_bindings.cjs +78 -0
- package/pro/squads/design/scripts/dissect-artifact.cjs +806 -0
- package/pro/squads/design/scripts/validate-a11y-integration.cjs +40 -0
- package/pro/squads/design/scripts/validate-design-squad.py +411 -0
- package/pro/squads/design/squad.yaml +714 -0
- package/pro/squads/design/tasks/a11y-audit.md +340 -0
- package/pro/squads/design/tasks/aria-audit.md +525 -0
- package/pro/squads/design/tasks/atomic-refactor-execute.md +391 -0
- package/pro/squads/design/tasks/atomic-refactor-plan.md +262 -0
- package/pro/squads/design/tasks/audit-reading-experience.md +350 -0
- package/pro/squads/design/tasks/audit-tailwind-config.md +101 -0
- package/pro/squads/design/tasks/bootstrap-shadcn-library.md +96 -0
- package/pro/squads/design/tasks/bundle-audit.md +245 -0
- package/pro/squads/design/tasks/contrast-matrix.md +373 -0
- package/pro/squads/design/tasks/create-doc.md +135 -0
- package/pro/squads/design/tasks/dead-code-detection.md +329 -0
- package/pro/squads/design/tasks/design-compare.md +414 -0
- package/pro/squads/design/tasks/design-process-optimization.md +407 -0
- package/pro/squads/design/tasks/design-review-orchestration.md +99 -0
- package/pro/squads/design/tasks/design-team-scaling.md +407 -0
- package/pro/squads/design/tasks/design-tooling-audit.md +404 -0
- package/pro/squads/design/tasks/design-triage.md +89 -0
- package/pro/squads/design/tasks/designops-maturity-assessment.md +364 -0
- package/pro/squads/design/tasks/designops-metrics-setup.md +465 -0
- package/pro/squads/design/tasks/ds-agentic-audit.md +100 -0
- package/pro/squads/design/tasks/ds-agentic-setup.md +103 -0
- package/pro/squads/design/tasks/ds-audit-codebase.md +273 -0
- package/pro/squads/design/tasks/ds-build-component.md +349 -0
- package/pro/squads/design/tasks/ds-build-mcp-server.md +84 -0
- package/pro/squads/design/tasks/ds-calculate-roi.md +282 -0
- package/pro/squads/design/tasks/ds-compose-molecule.md +106 -0
- package/pro/squads/design/tasks/ds-consolidate-patterns.md +253 -0
- package/pro/squads/design/tasks/ds-context-contract.md +194 -0
- package/pro/squads/design/tasks/ds-critical-eye-compare.md +130 -0
- package/pro/squads/design/tasks/ds-critical-eye-decide.md +139 -0
- package/pro/squads/design/tasks/ds-critical-eye-inventory.md +111 -0
- package/pro/squads/design/tasks/ds-critical-eye-report.md +101 -0
- package/pro/squads/design/tasks/ds-critical-eye-score.md +109 -0
- package/pro/squads/design/tasks/ds-designops.md +99 -0
- package/pro/squads/design/tasks/ds-extend-pattern.md +91 -0
- package/pro/squads/design/tasks/ds-extract-tokens.md +312 -0
- package/pro/squads/design/tasks/ds-figma-pipeline.md +95 -0
- package/pro/squads/design/tasks/ds-fluent-audit.md +105 -0
- package/pro/squads/design/tasks/ds-fluent-build.md +110 -0
- package/pro/squads/design/tasks/ds-generate-ai-metadata.md +81 -0
- package/pro/squads/design/tasks/ds-generate-cursor-rules.md +74 -0
- package/pro/squads/design/tasks/ds-generate-documentation.md +101 -0
- package/pro/squads/design/tasks/ds-generate-migration-strategy.md +331 -0
- package/pro/squads/design/tasks/ds-generate-shock-report.md +323 -0
- package/pro/squads/design/tasks/ds-govern-a11y-compliance.md +93 -0
- package/pro/squads/design/tasks/ds-governance.md +187 -0
- package/pro/squads/design/tasks/ds-health-metrics.md +278 -0
- package/pro/squads/design/tasks/ds-integrate-squad.md +130 -0
- package/pro/squads/design/tasks/ds-integrate-workspace.md +100 -0
- package/pro/squads/design/tasks/ds-legacy-modernization.md +302 -0
- package/pro/squads/design/tasks/ds-mcp-status.md +65 -0
- package/pro/squads/design/tasks/ds-motion-audit.md +118 -0
- package/pro/squads/design/tasks/ds-multi-framework.md +96 -0
- package/pro/squads/design/tasks/ds-parallelization-gate.md +246 -0
- package/pro/squads/design/tasks/ds-query.md +90 -0
- package/pro/squads/design/tasks/ds-rebuild-artifact.md +369 -0
- package/pro/squads/design/tasks/ds-reverse-engineer.md +194 -0
- package/pro/squads/design/tasks/ds-scan-artifact.md +131 -0
- package/pro/squads/design/tasks/ds-setup-design-system.md +297 -0
- package/pro/squads/design/tasks/ds-sync-registry.md +287 -0
- package/pro/squads/design/tasks/ds-theme-multi-brand.md +90 -0
- package/pro/squads/design/tasks/ds-token-modes.md +108 -0
- package/pro/squads/design/tasks/ds-token-w3c-extract.md +105 -0
- package/pro/squads/design/tasks/ds-validate-ai-readiness.md +69 -0
- package/pro/squads/design/tasks/ds-visual-regression.md +130 -0
- package/pro/squads/design/tasks/execute-checklist.md +141 -0
- package/pro/squads/design/tasks/export-design-tokens-dtcg.md +97 -0
- package/pro/squads/design/tasks/f1-apply-foundations.md +154 -0
- package/pro/squads/design/tasks/f1-ingest-figma-tokens.md +130 -0
- package/pro/squads/design/tasks/f1-map-tokens-to-shadcn.md +145 -0
- package/pro/squads/design/tasks/f1-qa-foundations.md +95 -0
- package/pro/squads/design/tasks/f2-adapt-shadcn-components.md +155 -0
- package/pro/squads/design/tasks/f2-ingest-base-components.md +148 -0
- package/pro/squads/design/tasks/f2-qa-base-components.md +98 -0
- package/pro/squads/design/tasks/f3-derive-components.md +145 -0
- package/pro/squads/design/tasks/f3-qa-derived-components.md +101 -0
- package/pro/squads/design/tasks/focus-order-audit.md +450 -0
- package/pro/squads/design/tasks/sb-brownfield-migrate.md +367 -0
- package/pro/squads/design/tasks/sb-brownfield-scan.md +318 -0
- package/pro/squads/design/tasks/sb-configure.md +230 -0
- package/pro/squads/design/tasks/sb-expand-shadcn.md +213 -0
- package/pro/squads/design/tasks/sb-generate-all-stories.md +288 -0
- package/pro/squads/design/tasks/sb-install.md +152 -0
- package/pro/squads/design/tasks/sb-sync-workspace.md +239 -0
- package/pro/squads/design/tasks/sb-verify.md +203 -0
- package/pro/squads/design/tasks/tailwind-upgrade.md +117 -0
- package/pro/squads/design/tasks/token-usage-analytics.md +262 -0
- package/pro/squads/design/tasks/ux-rewrite-sixth-grade.md +82 -0
- package/pro/squads/design/tasks/validate-design-fidelity.md +222 -0
- package/pro/squads/design/templates/agent-template.yaml +46 -0
- package/pro/squads/design/templates/clone-mind-template.md +352 -0
- package/pro/squads/design/templates/component-prompt-injection-tmpl.md +236 -0
- package/pro/squads/design/templates/component-visual-spec-tmpl.md +378 -0
- package/pro/squads/design/templates/critical-eye-cycle-report-tmpl.md +165 -0
- package/pro/squads/design/templates/design-fidelity-report-tmpl.md +155 -0
- package/pro/squads/design/templates/ds-ai-component-metadata-schema-tmpl.json +138 -0
- package/pro/squads/design/templates/ds-artifact-analysis.md +70 -0
- package/pro/squads/design/templates/ds-health-report-tmpl.md +236 -0
- package/pro/squads/design/templates/ds-migration-strategy-tmpl.md +524 -0
- package/pro/squads/design/templates/ds-state-persistence-tmpl.yaml +194 -0
- package/pro/squads/design/templates/ds-tokens-schema-tmpl.yaml +139 -0
- package/pro/squads/design/templates/migration-strategy-tmpl.md +524 -0
- package/pro/squads/design/templates/reading-design-tokens.css +26 -0
- package/pro/squads/design/templates/state-persistence-tmpl.yaml +219 -0
- package/pro/squads/design/templates/tokens-schema-tmpl.yaml +305 -0
- package/pro/squads/design/workflows/agentic-readiness.yaml +83 -0
- package/pro/squads/design/workflows/audit-only.yaml +198 -0
- package/pro/squads/design/workflows/brownfield-complete.yaml +257 -0
- package/pro/squads/design/workflows/critical-eye.yaml +184 -0
- package/pro/squads/design/workflows/dtcg-tokens-governance.yaml +64 -0
- package/pro/squads/design/workflows/foundations-pipeline.yaml +192 -0
- package/pro/squads/design/workflows/greenfield-new.yaml +192 -0
- package/pro/squads/design/workflows/motion-quality.yaml +65 -0
- package/pro/squads/design/workflows/self-healing-workflow.yaml +237 -0
- package/pro/squads/design/workflows/storybook-brownfield-migration.yaml +400 -0
- package/pro/squads/design/workflows/storybook-full-setup.yaml +280 -0
- package/pro/squads/index.js +145 -0
- package/pro/squads/squad-creator-pro/.state.json +32 -0
- package/pro/squads/squad-creator-pro/CHANGELOG.md +275 -0
- package/pro/squads/squad-creator-pro/HEADLINE.md +3 -0
- package/pro/squads/squad-creator-pro/README.md +1059 -0
- package/pro/squads/squad-creator-pro/agents/oalanicolas.md +438 -0
- package/pro/squads/squad-creator-pro/agents/pedro-valerio.md +449 -0
- package/pro/squads/squad-creator-pro/agents/squad-chief.md +1651 -0
- package/pro/squads/squad-creator-pro/agents/thiago_finch.md +976 -0
- package/pro/squads/squad-creator-pro/assessments/axioma-assessment-wf-create-squad.yaml +325 -0
- package/pro/squads/squad-creator-pro/checklists/.gitkeep +1 -0
- package/pro/squads/squad-creator-pro/checklists/agent-depth-checklist.md +244 -0
- package/pro/squads/squad-creator-pro/checklists/agent-quality-gate.md +434 -0
- package/pro/squads/squad-creator-pro/checklists/create-agent-checklist.md +184 -0
- package/pro/squads/squad-creator-pro/checklists/create-squad-checklist.md +219 -0
- package/pro/squads/squad-creator-pro/checklists/create-workflow-checklist.md +224 -0
- package/pro/squads/squad-creator-pro/checklists/deep-research-quality.md +506 -0
- package/pro/squads/squad-creator-pro/checklists/executor-matrix-checklist.md +260 -0
- package/pro/squads/squad-creator-pro/checklists/mental-model-integration-checklist.md +95 -0
- package/pro/squads/squad-creator-pro/checklists/mind-validation.md +374 -0
- package/pro/squads/squad-creator-pro/checklists/quality-gate-checklist.md +385 -0
- package/pro/squads/squad-creator-pro/checklists/smoke-test-agent.md +313 -0
- package/pro/squads/squad-creator-pro/checklists/sop-validation.md +250 -0
- package/pro/squads/squad-creator-pro/checklists/squad-checklist.md +1014 -0
- package/pro/squads/squad-creator-pro/checklists/squad-overview-checklist.md +393 -0
- package/pro/squads/squad-creator-pro/checklists/task-anatomy-checklist.md +626 -0
- package/pro/squads/squad-creator-pro/config/.gitkeep +1 -0
- package/pro/squads/squad-creator-pro/config/axioma-validator.yaml +371 -0
- package/pro/squads/squad-creator-pro/config/heuristics.yaml +753 -0
- package/pro/squads/squad-creator-pro/config/model-routing.yaml +693 -0
- package/pro/squads/squad-creator-pro/config/quality-gates.yaml +415 -0
- package/pro/squads/squad-creator-pro/config/scoring-rubric.yaml +199 -0
- package/pro/squads/squad-creator-pro/config/squad-config.yaml +165 -0
- package/pro/squads/squad-creator-pro/config/task-anatomy.yaml +263 -0
- package/pro/squads/squad-creator-pro/config/veto-conditions.yaml +455 -0
- package/pro/squads/squad-creator-pro/config.yaml +35 -0
- package/pro/squads/squad-creator-pro/data/.gitkeep +1 -0
- package/pro/squads/squad-creator-pro/data/an-anchor-words.yaml +78 -0
- package/pro/squads/squad-creator-pro/data/an-clone-anti-patterns.yaml +148 -0
- package/pro/squads/squad-creator-pro/data/an-clone-validation.yaml +190 -0
- package/pro/squads/squad-creator-pro/data/an-diagnostic-framework.yaml +164 -0
- package/pro/squads/squad-creator-pro/data/an-output-examples.yaml +102 -0
- package/pro/squads/squad-creator-pro/data/an-source-signals.yaml +98 -0
- package/pro/squads/squad-creator-pro/data/an-source-tiers.yaml +119 -0
- package/pro/squads/squad-creator-pro/data/best-practices.md +986 -0
- package/pro/squads/squad-creator-pro/data/core-heuristics.md +510 -0
- package/pro/squads/squad-creator-pro/data/decision-heuristics-framework.md +620 -0
- package/pro/squads/squad-creator-pro/data/executor-decision-tree.md +774 -0
- package/pro/squads/squad-creator-pro/data/executor-matrix-framework.md +441 -0
- package/pro/squads/squad-creator-pro/data/fusion-decision-points-analysis.md +397 -0
- package/pro/squads/squad-creator-pro/data/fusion-executor-analysis.md +677 -0
- package/pro/squads/squad-creator-pro/data/hybridops-patterns.md +1351 -0
- package/pro/squads/squad-creator-pro/data/internal-infrastructure-library.yaml +99 -0
- package/pro/squads/squad-creator-pro/data/mental-model-task-matrix.yaml +692 -0
- package/pro/squads/squad-creator-pro/data/pipeline-patterns.md +352 -0
- package/pro/squads/squad-creator-pro/data/pm-best-practices.md +440 -0
- package/pro/squads/squad-creator-pro/data/pv-anchor-words.yaml +64 -0
- package/pro/squads/squad-creator-pro/data/pv-authenticity-markers.yaml +200 -0
- package/pro/squads/squad-creator-pro/data/pv-meta-axiomas.yaml +162 -0
- package/pro/squads/squad-creator-pro/data/pv-output-examples.yaml +342 -0
- package/pro/squads/squad-creator-pro/data/pv-workflow-validation.yaml +318 -0
- package/pro/squads/squad-creator-pro/data/quality-dimensions-framework.md +405 -0
- package/pro/squads/squad-creator-pro/data/squad-analytics-guide.md +252 -0
- package/pro/squads/squad-creator-pro/data/squad-kb.md +987 -0
- package/pro/squads/squad-creator-pro/data/squad-registry.yaml +841 -0
- package/pro/squads/squad-creator-pro/data/squad-type-definitions.yaml +578 -0
- package/pro/squads/squad-creator-pro/data/tier-system-framework.md +475 -0
- package/pro/squads/squad-creator-pro/data/tool-evaluation-framework.md +847 -0
- package/pro/squads/squad-creator-pro/data/tool-registry.yaml +700 -0
- package/pro/squads/squad-creator-pro/docs/ADR-001-model-tier-qualification.md +344 -0
- package/pro/squads/squad-creator-pro/docs/AGENT-COLLABORATION.md +609 -0
- package/pro/squads/squad-creator-pro/docs/ARCHITECTURE-DIAGRAMS.md +1466 -0
- package/pro/squads/squad-creator-pro/docs/COMMANDS.md +544 -0
- package/pro/squads/squad-creator-pro/docs/CONCEPTS.md +584 -0
- package/pro/squads/squad-creator-pro/docs/FAQ.md +731 -0
- package/pro/squads/squad-creator-pro/docs/HITL-FLOW.md +255 -0
- package/pro/squads/squad-creator-pro/docs/MIGRATION-PLAN-AGENT-CONFORMITY.md +861 -0
- package/pro/squads/squad-creator-pro/docs/MIGRATION-ROADMAP-HYBRIDOPS.md +1161 -0
- package/pro/squads/squad-creator-pro/docs/MODEL-TIER-QUALIFICATION.md +337 -0
- package/pro/squads/squad-creator-pro/docs/PATTERN-LIBRARY.md +333 -0
- package/pro/squads/squad-creator-pro/docs/PEDRO-VALERIO-ARCHITECTURE.md +456 -0
- package/pro/squads/squad-creator-pro/docs/POR-ONDE-COMECAR.md +210 -0
- package/pro/squads/squad-creator-pro/docs/QUICK-START.md +205 -0
- package/pro/squads/squad-creator-pro/docs/RFC-001-deterministic-refactoring.md +463 -0
- package/pro/squads/squad-creator-pro/docs/TOOL-RECOMMENDATIONS.md +379 -0
- package/pro/squads/squad-creator-pro/docs/TROUBLESHOOTING.md +412 -0
- package/pro/squads/squad-creator-pro/docs/TUTORIAL-COMPLETO.md +458 -0
- package/pro/squads/squad-creator-pro/docs/optimize-v4-proposal.md +354 -0
- package/pro/squads/squad-creator-pro/docs/session-report-2026-02-01.md +411 -0
- package/pro/squads/squad-creator-pro/docs/sop-extraction-process.md +674 -0
- package/pro/squads/squad-creator-pro/docs/squad-chief-agent-flow.md +981 -0
- package/pro/squads/squad-creator-pro/docs/squad-creation-pipeline-workflow.md +937 -0
- package/pro/squads/squad-creator-pro/docs/task-optimization-framework.md +229 -0
- package/pro/squads/squad-creator-pro/docs/validation-report-2026-02-01.md +439 -0
- package/pro/squads/squad-creator-pro/minds/oalanicolas/artifacts/HANDOFF_PROTOCOL.md +269 -0
- package/pro/squads/squad-creator-pro/minds/oalanicolas/artifacts/SOURCE_CLASSIFICATION.md +258 -0
- package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_001.md +166 -0
- package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_002.md +206 -0
- package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_003.md +239 -0
- package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_004.md +153 -0
- package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_005.md +161 -0
- package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_006.md +166 -0
- package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_007.md +190 -0
- package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_008.md +191 -0
- package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_009.md +234 -0
- package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_010.md +240 -0
- package/pro/squads/squad-creator-pro/minds/pedro_valerio/artifacts/Assinatura_Linguistica.md +355 -0
- package/pro/squads/squad-creator-pro/minds/pedro_valerio/artifacts/META_AXIOMAS.md +277 -0
- package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_BS_001.md +144 -0
- package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_001.md +174 -0
- package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PM_001.md +191 -0
- package/pro/squads/squad-creator-pro/package.json +26 -0
- package/pro/squads/squad-creator-pro/protocols/ai-first-governance.md +63 -0
- package/pro/squads/squad-creator-pro/scripts/README.md +246 -0
- package/pro/squads/squad-creator-pro/scripts/__pycache__/dependency_check.cpython-314.pyc +0 -0
- package/pro/squads/squad-creator-pro/scripts/__pycache__/inventory.cpython-314.pyc +0 -0
- package/pro/squads/squad-creator-pro/scripts/__pycache__/naming_validator.cpython-314.pyc +0 -0
- package/pro/squads/squad-creator-pro/scripts/__pycache__/quality_gate.cpython-314.pyc +0 -0
- package/pro/squads/squad-creator-pro/scripts/__pycache__/scoring.cpython-314.pyc +0 -0
- package/pro/squads/squad-creator-pro/scripts/__pycache__/yaml_validator.cpython-314.pyc +0 -0
- package/pro/squads/squad-creator-pro/scripts/assess-sources.sh +443 -0
- package/pro/squads/squad-creator-pro/scripts/checklist_validator.py +451 -0
- package/pro/squads/squad-creator-pro/scripts/clone-review.sh +394 -0
- package/pro/squads/squad-creator-pro/scripts/coherence-validator.py +836 -0
- package/pro/squads/squad-creator-pro/scripts/create-agent-preflight.py +243 -0
- package/pro/squads/squad-creator-pro/scripts/cross-provider/compare-results.js +281 -0
- package/pro/squads/squad-creator-pro/scripts/cross-provider/cross-provider-runner.js +462 -0
- package/pro/squads/squad-creator-pro/scripts/dependency_check.py +333 -0
- package/pro/squads/squad-creator-pro/scripts/fidelity-score.sh +519 -0
- package/pro/squads/squad-creator-pro/scripts/generate-squad-greeting.js +426 -0
- package/pro/squads/squad-creator-pro/scripts/generate-squad-guide.js +558 -0
- package/pro/squads/squad-creator-pro/scripts/inventory.py +269 -0
- package/pro/squads/squad-creator-pro/scripts/lib/config-loader.js +151 -0
- package/pro/squads/squad-creator-pro/scripts/model-tier-validator.cjs +369 -0
- package/pro/squads/squad-creator-pro/scripts/model-usage-logger.cjs +245 -0
- package/pro/squads/squad-creator-pro/scripts/modernization-score.sh +308 -0
- package/pro/squads/squad-creator-pro/scripts/naming_validator.py +299 -0
- package/pro/squads/squad-creator-pro/scripts/on-specialist-complete.py +98 -0
- package/pro/squads/squad-creator-pro/scripts/quality_gate.py +413 -0
- package/pro/squads/squad-creator-pro/scripts/refresh-registry.py +270 -0
- package/pro/squads/squad-creator-pro/scripts/save-session-metrics.py +136 -0
- package/pro/squads/squad-creator-pro/scripts/scaffold-squad.cjs +281 -0
- package/pro/squads/squad-creator-pro/scripts/scoring.py +395 -0
- package/pro/squads/squad-creator-pro/scripts/security_scanner.py +378 -0
- package/pro/squads/squad-creator-pro/scripts/squad-analytics.py +585 -0
- package/pro/squads/squad-creator-pro/scripts/squad-context-loader.cjs +205 -0
- package/pro/squads/squad-creator-pro/scripts/squad-state-manager.cjs +451 -0
- package/pro/squads/squad-creator-pro/scripts/squad-workflow-runner.cjs +471 -0
- package/pro/squads/squad-creator-pro/scripts/squad_utils.py +261 -0
- package/pro/squads/squad-creator-pro/scripts/sync-ide-command.py +590 -0
- package/pro/squads/squad-creator-pro/scripts/tests/__init__.py +1 -0
- package/pro/squads/squad-creator-pro/scripts/tests/conftest.py +309 -0
- package/pro/squads/squad-creator-pro/scripts/tests/run_bash_tests.sh +29 -0
- package/pro/squads/squad-creator-pro/scripts/tests/test_assess_sources.sh +216 -0
- package/pro/squads/squad-creator-pro/scripts/tests/test_checklist_validator.py +396 -0
- package/pro/squads/squad-creator-pro/scripts/tests/test_clone_review.sh +239 -0
- package/pro/squads/squad-creator-pro/scripts/tests/test_coherence_validator.py +212 -0
- package/pro/squads/squad-creator-pro/scripts/tests/test_dependency_check.py +361 -0
- package/pro/squads/squad-creator-pro/scripts/tests/test_fidelity_score.sh +298 -0
- package/pro/squads/squad-creator-pro/scripts/tests/test_inventory.py +307 -0
- package/pro/squads/squad-creator-pro/scripts/tests/test_modernization_score.sh +211 -0
- package/pro/squads/squad-creator-pro/scripts/tests/test_naming_validator.py +373 -0
- package/pro/squads/squad-creator-pro/scripts/tests/test_quality_gate.py +280 -0
- package/pro/squads/squad-creator-pro/scripts/tests/test_refresh_registry.py +338 -0
- package/pro/squads/squad-creator-pro/scripts/tests/test_scoring.py +366 -0
- package/pro/squads/squad-creator-pro/scripts/tests/test_security_scanner.py +354 -0
- package/pro/squads/squad-creator-pro/scripts/tests/test_squad_analytics.py +450 -0
- package/pro/squads/squad-creator-pro/scripts/tests/test_validate_clone.sh +252 -0
- package/pro/squads/squad-creator-pro/scripts/tests/test_yaml_validator.py +412 -0
- package/pro/squads/squad-creator-pro/scripts/validate-agent-output.py +115 -0
- package/pro/squads/squad-creator-pro/scripts/validate-all.sh +49 -0
- package/pro/squads/squad-creator-pro/scripts/validate-squad-structure.py +535 -0
- package/pro/squads/squad-creator-pro/scripts/validate-squad.sh +944 -0
- package/pro/squads/squad-creator-pro/scripts/yaml_validator.py +528 -0
- package/pro/squads/squad-creator-pro/skills/squad.md +301 -0
- package/pro/squads/squad-creator-pro/squad.yaml +36 -0
- package/pro/squads/squad-creator-pro/tasks/CHANGELOG.md +80 -0
- package/pro/squads/squad-creator-pro/tasks/an-assess-sources.md +78 -0
- package/pro/squads/squad-creator-pro/tasks/an-clone-review.md +104 -0
- package/pro/squads/squad-creator-pro/tasks/an-compare-outputs.md +354 -0
- package/pro/squads/squad-creator-pro/tasks/an-design-clone.md +79 -0
- package/pro/squads/squad-creator-pro/tasks/an-diagnose-clone.md +87 -0
- package/pro/squads/squad-creator-pro/tasks/an-extract-dna.md +90 -0
- package/pro/squads/squad-creator-pro/tasks/an-extract-framework.md +100 -0
- package/pro/squads/squad-creator-pro/tasks/an-fidelity-score.md +108 -0
- package/pro/squads/squad-creator-pro/tasks/an-validate-clone.md +96 -0
- package/pro/squads/squad-creator-pro/tasks/auto-acquire-sources.md +349 -0
- package/pro/squads/squad-creator-pro/tasks/collect-sources.md +533 -0
- package/pro/squads/squad-creator-pro/tasks/create-agent.md +768 -0
- package/pro/squads/squad-creator-pro/tasks/create-documentation.md +258 -0
- package/pro/squads/squad-creator-pro/tasks/create-pipeline.md +296 -0
- package/pro/squads/squad-creator-pro/tasks/create-squad.md +933 -0
- package/pro/squads/squad-creator-pro/tasks/create-task.md +1148 -0
- package/pro/squads/squad-creator-pro/tasks/create-template.md +474 -0
- package/pro/squads/squad-creator-pro/tasks/create-workflow.md +720 -0
- package/pro/squads/squad-creator-pro/tasks/deconstruct.md +167 -0
- package/pro/squads/squad-creator-pro/tasks/deep-research-pre-agent.md +566 -0
- package/pro/squads/squad-creator-pro/tasks/detect-squad-context.md +81 -0
- package/pro/squads/squad-creator-pro/tasks/discover-tools.md +944 -0
- package/pro/squads/squad-creator-pro/tasks/extract-implicit.md +352 -0
- package/pro/squads/squad-creator-pro/tasks/extract-knowledge.md +577 -0
- package/pro/squads/squad-creator-pro/tasks/extract-sop.md +320 -0
- package/pro/squads/squad-creator-pro/tasks/extract-thinking-dna.md +653 -0
- package/pro/squads/squad-creator-pro/tasks/extract-voice-dna.md +619 -0
- package/pro/squads/squad-creator-pro/tasks/find-0.8.md +222 -0
- package/pro/squads/squad-creator-pro/tasks/install-commands.md +373 -0
- package/pro/squads/squad-creator-pro/tasks/lookup-model.md +78 -0
- package/pro/squads/squad-creator-pro/tasks/migrate-workflows-to-yaml.md +259 -0
- package/pro/squads/squad-creator-pro/tasks/next-squad.md +487 -0
- package/pro/squads/squad-creator-pro/tasks/optimize-workflow.md +851 -0
- package/pro/squads/squad-creator-pro/tasks/optimize.md +1082 -0
- package/pro/squads/squad-creator-pro/tasks/parallel-discovery.md +58 -0
- package/pro/squads/squad-creator-pro/tasks/pv-audit.md +244 -0
- package/pro/squads/squad-creator-pro/tasks/pv-axioma-assessment-wf-clone-mind.yaml +256 -0
- package/pro/squads/squad-creator-pro/tasks/pv-axioma-assessment.md +83 -0
- package/pro/squads/squad-creator-pro/tasks/pv-modernization-score.md +83 -0
- package/pro/squads/squad-creator-pro/tasks/qa-after-creation.md +475 -0
- package/pro/squads/squad-creator-pro/tasks/qualify-task.md +265 -0
- package/pro/squads/squad-creator-pro/tasks/reexecute-squad-phase.md +64 -0
- package/pro/squads/squad-creator-pro/tasks/refresh-registry.md +403 -0
- package/pro/squads/squad-creator-pro/tasks/smoke-test-model-routing.md +167 -0
- package/pro/squads/squad-creator-pro/tasks/squad-analytics.md +265 -0
- package/pro/squads/squad-creator-pro/tasks/squad-fusion.md +817 -0
- package/pro/squads/squad-creator-pro/tasks/squad-overview.md +683 -0
- package/pro/squads/squad-creator-pro/tasks/sync-ide-command.md +392 -0
- package/pro/squads/squad-creator-pro/tasks/update-mind.md +428 -0
- package/pro/squads/squad-creator-pro/tasks/upgrade-squad.md +919 -0
- package/pro/squads/squad-creator-pro/tasks/validate-extraction.md +209 -0
- package/pro/squads/squad-creator-pro/tasks/validate-final-artifacts.md +80 -0
- package/pro/squads/squad-creator-pro/tasks/validate-squad.md +1385 -0
- package/pro/squads/squad-creator-pro/templates/.gitkeep +1 -0
- package/pro/squads/squad-creator-pro/templates/agent-flow-doc-tmpl.md +512 -0
- package/pro/squads/squad-creator-pro/templates/agent-tmpl.md +697 -0
- package/pro/squads/squad-creator-pro/templates/config-tmpl.yaml +352 -0
- package/pro/squads/squad-creator-pro/templates/handoff-insumos-tmpl.yaml +112 -0
- package/pro/squads/squad-creator-pro/templates/orchestrator-tmpl.md +74 -0
- package/pro/squads/squad-creator-pro/templates/pipeline-progress-tmpl.py +373 -0
- package/pro/squads/squad-creator-pro/templates/pipeline-runner-tmpl.py +444 -0
- package/pro/squads/squad-creator-pro/templates/pipeline-state-tmpl.py +413 -0
- package/pro/squads/squad-creator-pro/templates/pop-extractor-prompt.md +549 -0
- package/pro/squads/squad-creator-pro/templates/quality-dashboard-tmpl.md +286 -0
- package/pro/squads/squad-creator-pro/templates/quality-gate-tmpl.yaml +589 -0
- package/pro/squads/squad-creator-pro/templates/readme-tmpl.md +231 -0
- package/pro/squads/squad-creator-pro/templates/research-output-tmpl.md +625 -0
- package/pro/squads/squad-creator-pro/templates/research-prompt-tmpl.md +479 -0
- package/pro/squads/squad-creator-pro/templates/squad-prd-tmpl.md +464 -0
- package/pro/squads/squad-creator-pro/templates/squad-readme-tmpl.md +170 -0
- package/pro/squads/squad-creator-pro/templates/story-create-agent-tmpl.md +284 -0
- package/pro/squads/squad-creator-pro/templates/task-tmpl.md +461 -0
- package/pro/squads/squad-creator-pro/templates/template-tmpl.yaml +227 -0
- package/pro/squads/squad-creator-pro/templates/workflow-doc-tmpl.md +860 -0
- package/pro/squads/squad-creator-pro/templates/workflow-tmpl.yaml +394 -0
- package/pro/squads/squad-creator-pro/test-cases/BATCH-PROGRESS.md +268 -0
- package/pro/squads/squad-creator-pro/test-cases/QUALIFICATION-DASHBOARD.yaml +13 -0
- package/pro/squads/squad-creator-pro/test-cases/_template.yaml +147 -0
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/ASSESSMENT-SUMMARY.md +275 -0
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/ASSESSMENT_SUMMARY.md +140 -0
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/CHECKPOINT_MATRIX.md +202 -0
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/EXECUTION-REPORT.md +413 -0
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/EXECUTION_NOTES.md +358 -0
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/README-v2.2.2.md +299 -0
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/README.md +320 -0
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/TEST-REPORT-v2.1.md +351 -0
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/VERIFICATION-CHECKLIST.txt +247 -0
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/formal-qualification-report.yaml +389 -0
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/haiku-output.yaml +366 -0
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/haiku-v2.1-output.yaml +452 -0
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/haiku-v2.2.1-output.yaml +281 -0
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/haiku-v2.2.2-output.yaml +332 -0
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/opus-baseline.yaml +517 -0
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/qualification-report.yaml +213 -0
- package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/test-case.yaml +69 -0
- package/pro/squads/squad-creator-pro/test-cases/an-clone-review/haiku-round-1.yaml +213 -0
- package/pro/squads/squad-creator-pro/test-cases/an-clone-review/opus-baseline.yaml +566 -0
- package/pro/squads/squad-creator-pro/test-cases/an-clone-review/qualification-report.yaml +82 -0
- package/pro/squads/squad-creator-pro/test-cases/an-design-clone/test-case.yaml +102 -0
- package/pro/squads/squad-creator-pro/test-cases/an-extract-dna/test-case.yaml +105 -0
- package/pro/squads/squad-creator-pro/test-cases/an-fidelity-score/haiku-round-1.yaml +262 -0
- package/pro/squads/squad-creator-pro/test-cases/an-fidelity-score/opus-baseline.yaml +266 -0
- package/pro/squads/squad-creator-pro/test-cases/an-fidelity-score/qualification-report.yaml +94 -0
- package/pro/squads/squad-creator-pro/test-cases/an-validate-clone/haiku-round-1.yaml +282 -0
- package/pro/squads/squad-creator-pro/test-cases/an-validate-clone/opus-baseline.yaml +470 -0
- package/pro/squads/squad-creator-pro/test-cases/an-validate-clone/qualification-report.yaml +106 -0
- package/pro/squads/squad-creator-pro/test-cases/collect-sources/test-case.yaml +105 -0
- package/pro/squads/squad-creator-pro/test-cases/create-task/test-case.yaml +104 -0
- package/pro/squads/squad-creator-pro/test-cases/cross-provider/DASHBOARD.yaml +11 -0
- package/pro/squads/squad-creator-pro/test-cases/pv-audit/test-case.yaml +106 -0
- package/pro/squads/squad-creator-pro/test-cases/pv-axioma-assessment/haiku-output.yaml +209 -0
- package/pro/squads/squad-creator-pro/test-cases/pv-axioma-assessment/opus-baseline.yaml +96 -0
- package/pro/squads/squad-creator-pro/test-cases/pv-axioma-assessment/sonnet-output.yaml +30 -0
- package/pro/squads/squad-creator-pro/test-cases/pv-axioma-assessment/test-case.yaml +129 -0
- package/pro/squads/squad-creator-pro/test-cases/pv-modernization-score/comparison-round-1.yaml +242 -0
- package/pro/squads/squad-creator-pro/test-cases/pv-modernization-score/haiku-round-1.yaml +393 -0
- package/pro/squads/squad-creator-pro/test-cases/pv-modernization-score/opus-baseline.yaml +488 -0
- package/pro/squads/squad-creator-pro/test-cases/pv-modernization-score/qualification-report.yaml +74 -0
- package/pro/squads/squad-creator-pro/test-cases/qa-after-creation/haiku-round-1.yaml +292 -0
- package/pro/squads/squad-creator-pro/test-cases/qa-after-creation/opus-baseline.yaml +603 -0
- package/pro/squads/squad-creator-pro/test-cases/qa-after-creation/qualification-report.yaml +97 -0
- package/pro/squads/squad-creator-pro/test-cases/smoke-test-model-routing/test-case.yaml +100 -0
- package/pro/squads/squad-creator-pro/test-cases/upgrade-squad/test-case.yaml +106 -0
- package/pro/squads/squad-creator-pro/test-cases/validate-squad/comparison-round-1.yaml +223 -0
- package/pro/squads/squad-creator-pro/test-cases/validate-squad/haiku-round-1-MINE.yaml +36 -0
- package/pro/squads/squad-creator-pro/test-cases/validate-squad/haiku-round-1.yaml +193 -0
- package/pro/squads/squad-creator-pro/test-cases/validate-squad/haiku-round-2.yaml +303 -0
- package/pro/squads/squad-creator-pro/test-cases/validate-squad/haiku-round-3-v4-task.yaml +149 -0
- package/pro/squads/squad-creator-pro/test-cases/validate-squad/opus-baseline.yaml +529 -0
- package/pro/squads/squad-creator-pro/test-cases/validate-squad/opus-round-3-v4-task.yaml +132 -0
- package/pro/squads/squad-creator-pro/test-cases/validate-squad/qualification-report.yaml +104 -0
- package/pro/squads/squad-creator-pro/test-cases/wf-clone-mind/haiku-output-v2-calibrated.yaml +200 -0
- package/pro/squads/squad-creator-pro/test-cases/wf-clone-mind/haiku-output.yaml +183 -0
- package/pro/squads/squad-creator-pro/test-cases/wf-clone-mind/opus-baseline.yaml +112 -0
- package/pro/squads/squad-creator-pro/utils/.gitkeep +1 -0
- package/pro/squads/squad-creator-pro/workflows/.gitkeep +1 -0
- package/pro/squads/squad-creator-pro/workflows/create-squad.yaml +348 -0
- package/pro/squads/squad-creator-pro/workflows/modules/module-discovery.yaml +16 -0
- package/pro/squads/squad-creator-pro/workflows/modules/module-integration.yaml +16 -0
- package/pro/squads/squad-creator-pro/workflows/modules/module-quality-gates.yaml +15 -0
- package/pro/squads/squad-creator-pro/workflows/validate-squad.yaml +582 -0
- package/pro/squads/squad-creator-pro/workflows/wf-auto-acquire-sources.yaml +518 -0
- package/pro/squads/squad-creator-pro/workflows/wf-brownfield-upgrade-squad.yaml +46 -0
- package/pro/squads/squad-creator-pro/workflows/wf-clone-mind.yaml +521 -0
- package/pro/squads/squad-creator-pro/workflows/wf-context-aware-create-squad.yaml +47 -0
- package/pro/squads/squad-creator-pro/workflows/wf-create-squad.yaml +1619 -0
- package/pro/squads/squad-creator-pro/workflows/wf-cross-provider-qualification.yaml +711 -0
- package/pro/squads/squad-creator-pro/workflows/wf-discover-tools.yaml +1439 -0
- package/pro/squads/squad-creator-pro/workflows/wf-extraction-pipeline.yaml +486 -0
- package/pro/squads/squad-creator-pro/workflows/wf-mind-research-loop.yaml +668 -0
- package/pro/squads/squad-creator-pro/workflows/wf-model-tier-qualification.yaml +800 -0
- package/pro/squads/squad-creator-pro/workflows/wf-optimize-squad.yaml +684 -0
- package/pro/squads/squad-creator-pro/workflows/wf-research-then-create-agent.yaml +921 -0
- package/pro/squads/squad-creator-pro/workflows/wf-squad-fusion.yaml +1684 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# f3-derive-components
|
|
2
|
+
|
|
3
|
+
> **Phase 3, Step 8** — Derivar componentes restantes seguindo padroes estabelecidos nas Fases 1 e 2.
|
|
4
|
+
|
|
5
|
+
## Metadata
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
task:
|
|
9
|
+
id: f3-derive-components
|
|
10
|
+
phase: 3
|
|
11
|
+
step: 8
|
|
12
|
+
agent: ds-foundations-lead
|
|
13
|
+
depends_on: f2-qa-base-components (PASS)
|
|
14
|
+
blocking: false
|
|
15
|
+
next: f3-qa-derived-components
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Objetivo
|
|
19
|
+
|
|
20
|
+
Atualizar os componentes shadcn restantes (alem dos base) aplicando os padroes visuais e tokens estabelecidos nas Fases 1 e 2. Esta fase e mais autonoma — o agente aplica os padroes sem precisar de input novo do Figma para cada componente.
|
|
21
|
+
|
|
22
|
+
## Logica de Derivacao
|
|
23
|
+
|
|
24
|
+
Os padroes extraidos dos componentes base servem como guia:
|
|
25
|
+
|
|
26
|
+
| Padrao | Fonte | Aplicacao |
|
|
27
|
+
|---|---|---|
|
|
28
|
+
| Border radius | Button, Card | Todos os containers e inputs |
|
|
29
|
+
| Transition | Button | Todos os interativos |
|
|
30
|
+
| Shadow | Card | Containers elevados |
|
|
31
|
+
| Focus ring | Input, Button | Todos os focusaveis |
|
|
32
|
+
| Padding scale | Button, Card | Componentes de tamanho similar |
|
|
33
|
+
| Typography | Badge, Alert | Componentes de texto |
|
|
34
|
+
|
|
35
|
+
**Regra:** Se Button usa `rounded-lg`, Dialog tambem usa `rounded-lg`. Se Input usa `transition-all duration-200`, Select tambem usa.
|
|
36
|
+
|
|
37
|
+
## Grupos de Componentes
|
|
38
|
+
|
|
39
|
+
### Forms
|
|
40
|
+
|
|
41
|
+
| Componente | Arquivo | Derivar de |
|
|
42
|
+
|---|---|---|
|
|
43
|
+
| Select | `components/ui/select.tsx` | Input (border, focus, padding) |
|
|
44
|
+
| Checkbox | `components/ui/checkbox.tsx` | Input (focus ring), Button (radius) |
|
|
45
|
+
| RadioGroup | `components/ui/radio-group.tsx` | Checkbox (pattern) |
|
|
46
|
+
| Switch | `components/ui/switch.tsx` | Button (transition), Input (focus) |
|
|
47
|
+
| Slider | `components/ui/slider.tsx` | Input (track), Button (thumb) |
|
|
48
|
+
| Textarea | `components/ui/textarea.tsx` | Input (direct extension) |
|
|
49
|
+
| Form | `components/ui/form.tsx` | Layout only (minimal changes) |
|
|
50
|
+
| Label | `components/ui/label.tsx` | Typography tokens |
|
|
51
|
+
|
|
52
|
+
### Overlays
|
|
53
|
+
|
|
54
|
+
| Componente | Arquivo | Derivar de |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| Drawer | `components/ui/drawer.tsx` | Dialog (backdrop, container) |
|
|
57
|
+
| Sheet | `components/ui/sheet.tsx` | Dialog (overlay pattern) |
|
|
58
|
+
| Popover | `components/ui/popover.tsx` | Card (container), Dialog (overlay) |
|
|
59
|
+
| Tooltip | `components/ui/tooltip.tsx` | Badge (compact), Popover (overlay) |
|
|
60
|
+
| HoverCard | `components/ui/hover-card.tsx` | Card + Popover |
|
|
61
|
+
| DropdownMenu | `components/ui/dropdown-menu.tsx` | Popover (container) |
|
|
62
|
+
| ContextMenu | `components/ui/context-menu.tsx` | DropdownMenu (same pattern) |
|
|
63
|
+
| Menubar | `components/ui/menubar.tsx` | DropdownMenu (same pattern) |
|
|
64
|
+
| Command | `components/ui/command.tsx` | Dialog + Input |
|
|
65
|
+
| AlertDialog | `components/ui/alert-dialog.tsx` | Dialog (direct extension) |
|
|
66
|
+
|
|
67
|
+
### Navigation
|
|
68
|
+
|
|
69
|
+
| Componente | Arquivo | Derivar de |
|
|
70
|
+
|---|---|---|
|
|
71
|
+
| Tabs | `components/ui/tabs.tsx` | Button (interactive), Badge (indicator) |
|
|
72
|
+
| Breadcrumb | `components/ui/breadcrumb.tsx` | Typography, muted colors |
|
|
73
|
+
| NavigationMenu | `components/ui/navigation-menu.tsx` | Button + Popover |
|
|
74
|
+
| Pagination | `components/ui/pagination.tsx` | Button (page numbers) |
|
|
75
|
+
| Sidebar | `components/ui/sidebar.tsx` | Sidebar tokens, Button |
|
|
76
|
+
|
|
77
|
+
### Data Display
|
|
78
|
+
|
|
79
|
+
| Componente | Arquivo | Derivar de |
|
|
80
|
+
|---|---|---|
|
|
81
|
+
| Table | `components/ui/table.tsx` | Card (container), border tokens |
|
|
82
|
+
| Accordion | `components/ui/accordion.tsx` | Card (container), Button (trigger) |
|
|
83
|
+
| Carousel | `components/ui/carousel.tsx` | Card + Button (controls) |
|
|
84
|
+
| Progress | `components/ui/progress.tsx` | Primary token (fill) |
|
|
85
|
+
| Calendar | `components/ui/calendar.tsx` | Button (days), Card (container) |
|
|
86
|
+
| Avatar | `components/ui/avatar.tsx` | Badge (shape), primary tokens |
|
|
87
|
+
| AspectRatio | `components/ui/aspect-ratio.tsx` | Container only (minimal) |
|
|
88
|
+
| Collapsible | `components/ui/collapsible.tsx` | Accordion (same pattern) |
|
|
89
|
+
| Resizable | `components/ui/resizable.tsx` | Border tokens |
|
|
90
|
+
| ScrollArea | `components/ui/scroll-area.tsx` | Border/muted tokens |
|
|
91
|
+
| Separator | `components/ui/separator.tsx` | Border token |
|
|
92
|
+
| Skeleton | `components/ui/skeleton.tsx` | Muted token |
|
|
93
|
+
|
|
94
|
+
### Feedback
|
|
95
|
+
|
|
96
|
+
| Componente | Arquivo | Derivar de |
|
|
97
|
+
|---|---|---|
|
|
98
|
+
| Toast/Sonner | `components/ui/sonner.tsx` | Alert (feedback pattern) |
|
|
99
|
+
| Toggle | `components/ui/toggle.tsx` | Button (interactive) |
|
|
100
|
+
| ToggleGroup | `components/ui/toggle-group.tsx` | Toggle (group pattern) |
|
|
101
|
+
|
|
102
|
+
## Execution Steps
|
|
103
|
+
|
|
104
|
+
### Step 1: Extrair Padroes dos Componentes Base
|
|
105
|
+
|
|
106
|
+
Ler os componentes base adaptados e extrair padroes:
|
|
107
|
+
|
|
108
|
+
```yaml
|
|
109
|
+
patterns:
|
|
110
|
+
radius: "rounded-lg" # from Button, Card
|
|
111
|
+
transition: "transition-all duration-200" # from Button
|
|
112
|
+
shadow: "shadow-sm" # from Card
|
|
113
|
+
focus_ring: "focus-visible:ring-2 focus-visible:ring-ring" # from Input
|
|
114
|
+
border: "border" # from Card, Input
|
|
115
|
+
disabled: "disabled:opacity-50 disabled:pointer-events-none" # from Button
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Step 2: Aplicar por Grupo
|
|
119
|
+
|
|
120
|
+
Processar cada grupo na ordem: Forms → Overlays → Navigation → Data Display → Feedback.
|
|
121
|
+
|
|
122
|
+
Para cada componente:
|
|
123
|
+
1. Ler arquivo atual
|
|
124
|
+
2. Identificar classes Tailwind que divergem dos padroes
|
|
125
|
+
3. Substituir para manter consistencia
|
|
126
|
+
4. Nao alterar estrutura/props/accessibility
|
|
127
|
+
|
|
128
|
+
### Step 3: Documentar Mudancas
|
|
129
|
+
|
|
130
|
+
Log de mudancas por componente (apenas componentes que foram alterados).
|
|
131
|
+
|
|
132
|
+
## Validacao
|
|
133
|
+
|
|
134
|
+
- [ ] Todos os componentes renderizam sem erros
|
|
135
|
+
- [ ] Consistencia visual cross-component
|
|
136
|
+
- [ ] Tokens semanticos usados em todos
|
|
137
|
+
|
|
138
|
+
## Output
|
|
139
|
+
|
|
140
|
+
- Componentes modificados em `components/ui/`
|
|
141
|
+
- Log de mudancas consolidado
|
|
142
|
+
|
|
143
|
+
## Related Checklists
|
|
144
|
+
|
|
145
|
+
- `squads/design/checklists/component-adaptation-checklist.md`
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# f3-qa-derived-components
|
|
2
|
+
|
|
3
|
+
> **Phase 3, Step 9** — QA gate final de todos os componentes. Gate de conclusao do pipeline.
|
|
4
|
+
|
|
5
|
+
## Metadata
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
task:
|
|
9
|
+
id: f3-qa-derived-components
|
|
10
|
+
phase: 3
|
|
11
|
+
step: 9
|
|
12
|
+
agent: ds-foundations-lead
|
|
13
|
+
depends_on: f3-derive-components
|
|
14
|
+
blocking: true
|
|
15
|
+
gate: true
|
|
16
|
+
final: true
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Objetivo
|
|
20
|
+
|
|
21
|
+
Validar TODOS os componentes shadcn (base + derivados) como um conjunto coeso, garantindo consistencia visual cross-component, acessibilidade, e dark mode.
|
|
22
|
+
|
|
23
|
+
## QA Checklist — Batch Validation
|
|
24
|
+
|
|
25
|
+
### Por Componente (todos)
|
|
26
|
+
|
|
27
|
+
- [ ] Importa sem erros de TypeScript
|
|
28
|
+
- [ ] Renderiza sem runtime errors
|
|
29
|
+
- [ ] Props API inalterada
|
|
30
|
+
- [ ] Tokens semanticos (sem hardcoded colors)
|
|
31
|
+
- [ ] Dark mode funcional
|
|
32
|
+
- [ ] Focus-visible presente (componentes interativos)
|
|
33
|
+
|
|
34
|
+
### Consistencia Cross-Component
|
|
35
|
+
|
|
36
|
+
- [ ] **Radius:** Mesmo border-radius para componentes de mesma categoria
|
|
37
|
+
- [ ] **Transitions:** Mesma duracao e easing em todos os interativos
|
|
38
|
+
- [ ] **Shadows:** Escala consistente (none → sm → md → lg)
|
|
39
|
+
- [ ] **Focus ring:** Mesmo estilo em todos os focusaveis
|
|
40
|
+
- [ ] **Disabled state:** Mesmo padrao visual em todos
|
|
41
|
+
- [ ] **Padding scale:** Proporcional entre tamanhos (sm, md, lg)
|
|
42
|
+
- [ ] **Typography:** Mesmos font-size/weight para elementos similares
|
|
43
|
+
|
|
44
|
+
### Acessibilidade — Batch
|
|
45
|
+
|
|
46
|
+
- [ ] Todos os pares foreground/background passam WCAG AA (4.5:1)
|
|
47
|
+
- [ ] Todos os componentes interativos tem focus-visible
|
|
48
|
+
- [ ] Nenhum ARIA attribute removido
|
|
49
|
+
- [ ] Keyboard navigation funcional em Forms e Navigation components
|
|
50
|
+
|
|
51
|
+
### Dark Mode — Batch
|
|
52
|
+
|
|
53
|
+
- [ ] Todos os componentes adaptam em `.dark`
|
|
54
|
+
- [ ] Contraste mantido em dark mode
|
|
55
|
+
- [ ] Cores de feedback (destructive, warning, info, success) visiveis em ambos os modos
|
|
56
|
+
|
|
57
|
+
### Integracao
|
|
58
|
+
|
|
59
|
+
- [ ] `npm run dev` executa sem erros
|
|
60
|
+
- [ ] Nenhum warning de Tailwind sobre classes desconhecidas
|
|
61
|
+
- [ ] `@theme inline` bridge cobre todas as variaveis usadas
|
|
62
|
+
|
|
63
|
+
## Grupos de Validacao
|
|
64
|
+
|
|
65
|
+
| Grupo | Componentes | Status |
|
|
66
|
+
|---|---|---|
|
|
67
|
+
| Forms | Select, Checkbox, RadioGroup, Switch, Slider, Textarea, Form, Label | [ ] |
|
|
68
|
+
| Overlays | Dialog, Drawer, Sheet, Popover, Tooltip, HoverCard, DropdownMenu, ContextMenu, Menubar, Command, AlertDialog | [ ] |
|
|
69
|
+
| Navigation | Tabs, Breadcrumb, NavigationMenu, Pagination, Sidebar | [ ] |
|
|
70
|
+
| Data Display | Table, Accordion, Carousel, Progress, Calendar, Avatar, Collapsible, Resizable, ScrollArea, Separator, Skeleton | [ ] |
|
|
71
|
+
| Feedback | Alert, Toast/Sonner, Toggle, ToggleGroup | [ ] |
|
|
72
|
+
| Base (re-check) | Button, Input, Badge, Card | [ ] |
|
|
73
|
+
|
|
74
|
+
## Verdicts
|
|
75
|
+
|
|
76
|
+
| Verdict | Condicao | Acao |
|
|
77
|
+
|---------|----------|------|
|
|
78
|
+
| **PASS** | Todos os checks ok | Pipeline completo |
|
|
79
|
+
| **PASS com observacoes** | Checks criticos ok, minor visual diffs documentados | Pipeline completo com notas |
|
|
80
|
+
| **FAIL** | API quebrada, acessibilidade comprometida, inconsistencia grave | Retornar para f3-derive-components |
|
|
81
|
+
|
|
82
|
+
## Metricas de Conclusao
|
|
83
|
+
|
|
84
|
+
Ao final, reportar:
|
|
85
|
+
|
|
86
|
+
- Total de componentes adaptados: X / 56
|
|
87
|
+
- Tokens customizados: X (core) + X (extensoes)
|
|
88
|
+
- Checks de contraste WCAG: X passed / X total
|
|
89
|
+
- Tempo total do pipeline: (registrar)
|
|
90
|
+
|
|
91
|
+
## Output
|
|
92
|
+
|
|
93
|
+
Report final de QA com:
|
|
94
|
+
- Resultado por grupo
|
|
95
|
+
- Metricas de conclusao
|
|
96
|
+
- Lista de observacoes (se houver)
|
|
97
|
+
- Verdict final
|
|
98
|
+
|
|
99
|
+
## Related Checklists
|
|
100
|
+
|
|
101
|
+
- `squads/design/checklists/component-adaptation-checklist.md`
|
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
# Task: focus-order-audit
|
|
2
|
+
|
|
3
|
+
> **Command:** `*focus-order {path}`
|
|
4
|
+
> **Agent:** Brad Frost (Design System Architect)
|
|
5
|
+
> **Purpose:** Validate keyboard navigation, tab order, and focus management
|
|
6
|
+
> **Execution Type:** `Agent`
|
|
7
|
+
> **Dependencies:** depends_on: `[]` · enables: `[]` · workflow: `accessibility`
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
Comprehensive keyboard accessibility audit covering:
|
|
14
|
+
1. **Tab order validation** - logical focus sequence
|
|
15
|
+
2. **Focus indicators** - visible, sufficient contrast
|
|
16
|
+
3. **Keyboard traps** - elements that capture focus
|
|
17
|
+
4. **Interactive elements** - all clickable = keyboard accessible
|
|
18
|
+
5. **Focus management** - modals, dialogs, dynamic content
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Input
|
|
23
|
+
|
|
24
|
+
| Parameter | Required | Description |
|
|
25
|
+
|-----------|----------|-------------|
|
|
26
|
+
| `path` | Yes | Directory to audit (e.g., `./app/components`) |
|
|
27
|
+
| `--component` | No | Audit single component |
|
|
28
|
+
| `--generate-map` | No | Generate visual focus order diagram |
|
|
29
|
+
| `--fix` | No | Auto-fix simple issues |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Execution Steps
|
|
34
|
+
|
|
35
|
+
### Phase 1: Interactive Element Discovery
|
|
36
|
+
|
|
37
|
+
Find all elements that should be keyboard accessible:
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
interface InteractiveElement {
|
|
41
|
+
type: 'native' | 'custom';
|
|
42
|
+
element: string; // button, a, div, span, etc.
|
|
43
|
+
file: string;
|
|
44
|
+
line: number;
|
|
45
|
+
hasTabIndex: boolean;
|
|
46
|
+
tabIndexValue: number | null;
|
|
47
|
+
hasClickHandler: boolean;
|
|
48
|
+
hasKeyHandler: boolean;
|
|
49
|
+
role: string | null;
|
|
50
|
+
issues: FocusIssue[];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Elements to scan for
|
|
54
|
+
const nativeInteractive = [
|
|
55
|
+
'button', 'a[href]', 'input', 'select', 'textarea',
|
|
56
|
+
'[contenteditable]', 'details', 'summary'
|
|
57
|
+
];
|
|
58
|
+
|
|
59
|
+
const customInteractive = [
|
|
60
|
+
// Elements with click handlers
|
|
61
|
+
'onClick=', '@click=', '(click)=',
|
|
62
|
+
// Elements with interactive roles
|
|
63
|
+
'role="button"', 'role="link"', 'role="tab"',
|
|
64
|
+
'role="menuitem"', 'role="option"', 'role="checkbox"',
|
|
65
|
+
'role="radio"', 'role="switch"', 'role="slider"'
|
|
66
|
+
];
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Phase 2: Tab Order Analysis
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
interface TabOrderResult {
|
|
73
|
+
element: string;
|
|
74
|
+
file: string;
|
|
75
|
+
line: number;
|
|
76
|
+
tabIndex: number;
|
|
77
|
+
order: number; // Computed tab order position
|
|
78
|
+
issues: TabOrderIssue[];
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
type TabOrderIssue =
|
|
82
|
+
| 'positive-tabindex' // tabIndex > 0 (anti-pattern)
|
|
83
|
+
| 'negative-tabindex' // tabIndex < 0 on interactive
|
|
84
|
+
| 'out-of-order' // Visual vs DOM order mismatch
|
|
85
|
+
| 'skip-heading' // Skips heading levels
|
|
86
|
+
| 'focus-trap-detected'; // Can't tab out
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Tab Order Rules:**
|
|
90
|
+
1. `tabIndex="0"` - Natural order (preferred)
|
|
91
|
+
2. `tabIndex="-1"` - Programmatically focusable only
|
|
92
|
+
3. `tabIndex="1+"` - ANTI-PATTERN (forces order, breaks predictability)
|
|
93
|
+
|
|
94
|
+
### Phase 3: Focus Indicator Validation
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
interface FocusIndicator {
|
|
98
|
+
element: string;
|
|
99
|
+
file: string;
|
|
100
|
+
line: number;
|
|
101
|
+
hasVisibleFocus: boolean;
|
|
102
|
+
focusStyle: {
|
|
103
|
+
outline: string | null;
|
|
104
|
+
boxShadow: string | null;
|
|
105
|
+
ring: string | null; // Tailwind ring-*
|
|
106
|
+
custom: boolean;
|
|
107
|
+
};
|
|
108
|
+
contrastRatio: number; // Focus vs background
|
|
109
|
+
issues: FocusIndicatorIssue[];
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
type FocusIndicatorIssue =
|
|
113
|
+
| 'outline-none-no-replacement' // outline:none without alternative
|
|
114
|
+
| 'insufficient-contrast' // Focus indicator < 3:1
|
|
115
|
+
| 'too-subtle' // Very thin/light focus
|
|
116
|
+
| 'focus-visible-missing'; // No :focus-visible support
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**WCAG 2.2 Focus Requirements:**
|
|
120
|
+
- **2.4.7 Focus Visible (AA):** Focus indicator must be visible
|
|
121
|
+
- **2.4.11 Focus Not Obscured (AA):** Focus not fully hidden by other content
|
|
122
|
+
- **2.4.12 Focus Not Obscured Enhanced (AAA):** Focus not partially hidden
|
|
123
|
+
- **2.4.13 Focus Appearance (AAA):** Minimum 2px perimeter, 3:1 contrast
|
|
124
|
+
|
|
125
|
+
### Phase 4: Keyboard Handler Validation
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
interface KeyboardHandler {
|
|
129
|
+
element: string;
|
|
130
|
+
file: string;
|
|
131
|
+
line: number;
|
|
132
|
+
handlers: {
|
|
133
|
+
onClick: boolean;
|
|
134
|
+
onKeyDown: boolean;
|
|
135
|
+
onKeyUp: boolean;
|
|
136
|
+
onKeyPress: boolean; // Deprecated
|
|
137
|
+
};
|
|
138
|
+
expectedKeys: string[]; // Enter, Space, Arrow*, Escape
|
|
139
|
+
issues: KeyboardIssue[];
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
type KeyboardIssue =
|
|
143
|
+
| 'click-only' // onClick without keyboard handler
|
|
144
|
+
| 'missing-enter-space' // Button without Enter/Space
|
|
145
|
+
| 'missing-escape' // Modal/dialog without Escape
|
|
146
|
+
| 'missing-arrows' // Menu/tabs without arrow keys
|
|
147
|
+
| 'using-deprecated'; // onKeyPress instead of onKeyDown
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**Expected Keyboard Patterns:**
|
|
151
|
+
|
|
152
|
+
| Element/Role | Required Keys |
|
|
153
|
+
|--------------|---------------|
|
|
154
|
+
| Button | Enter, Space |
|
|
155
|
+
| Link | Enter |
|
|
156
|
+
| Menu item | Enter, Arrow Up/Down |
|
|
157
|
+
| Tab | Enter, Arrow Left/Right |
|
|
158
|
+
| Modal/Dialog | Escape (close) |
|
|
159
|
+
| Dropdown | Escape, Arrow Up/Down |
|
|
160
|
+
| Slider | Arrow Left/Right |
|
|
161
|
+
| Checkbox | Space |
|
|
162
|
+
| Radio | Space, Arrow Up/Down |
|
|
163
|
+
|
|
164
|
+
### Phase 5: Focus Trap Detection
|
|
165
|
+
|
|
166
|
+
```typescript
|
|
167
|
+
interface FocusTrap {
|
|
168
|
+
element: string;
|
|
169
|
+
file: string;
|
|
170
|
+
line: number;
|
|
171
|
+
trapType: 'intentional' | 'unintentional';
|
|
172
|
+
hasEscapeRoute: boolean;
|
|
173
|
+
issues: FocusTrapIssue[];
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// Intentional traps (OK if implemented correctly)
|
|
177
|
+
const intentionalTraps = [
|
|
178
|
+
'role="dialog"',
|
|
179
|
+
'role="alertdialog"',
|
|
180
|
+
'aria-modal="true"'
|
|
181
|
+
];
|
|
182
|
+
|
|
183
|
+
// Patterns that often cause unintentional traps
|
|
184
|
+
const trapPatterns = [
|
|
185
|
+
'tabIndex="-1".*tabIndex="-1"', // Sequential -1s
|
|
186
|
+
'onBlur.*focus', // Focus on blur
|
|
187
|
+
'useEffect.*focus' // Auto-focus loops
|
|
188
|
+
];
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Phase 6: Modal/Dialog Focus Management
|
|
192
|
+
|
|
193
|
+
```typescript
|
|
194
|
+
interface ModalFocusAudit {
|
|
195
|
+
component: string;
|
|
196
|
+
file: string;
|
|
197
|
+
checks: {
|
|
198
|
+
trapsFocus: boolean; // Focus stays in modal
|
|
199
|
+
restoresFocus: boolean; // Returns focus on close
|
|
200
|
+
firstFocusable: string | null; // First element focused
|
|
201
|
+
closesOnEscape: boolean; // Escape key closes
|
|
202
|
+
hasAriaModal: boolean; // aria-modal="true"
|
|
203
|
+
};
|
|
204
|
+
issues: ModalFocusIssue[];
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Output
|
|
211
|
+
|
|
212
|
+
### 1. Focus Order Report
|
|
213
|
+
|
|
214
|
+
```markdown
|
|
215
|
+
# Focus Order Audit Report
|
|
216
|
+
|
|
217
|
+
**Path:** ./app/components
|
|
218
|
+
**Date:** 2026-01-05
|
|
219
|
+
**Components Scanned:** 156
|
|
220
|
+
|
|
221
|
+
## Summary
|
|
222
|
+
|
|
223
|
+
| Category | Issues | Critical | Serious | Moderate |
|
|
224
|
+
|----------|--------|----------|---------|----------|
|
|
225
|
+
| Tab Order | 8 | 2 | 4 | 2 |
|
|
226
|
+
| Focus Indicators | 12 | 5 | 4 | 3 |
|
|
227
|
+
| Keyboard Handlers | 15 | 6 | 7 | 2 |
|
|
228
|
+
| Focus Traps | 3 | 1 | 2 | 0 |
|
|
229
|
+
| **Total** | **38** | **14** | **17** | **7** |
|
|
230
|
+
|
|
231
|
+
## Critical Issues
|
|
232
|
+
|
|
233
|
+
### 1. ❌ Click-only interactive element
|
|
234
|
+
|
|
235
|
+
**File:** `app/components/ui/Card.tsx:45`
|
|
236
|
+
**Element:** `<div onClick={handleClick}>`
|
|
237
|
+
**Problem:** Has click handler but no keyboard support
|
|
238
|
+
|
|
239
|
+
**Current:**
|
|
240
|
+
```tsx
|
|
241
|
+
<div onClick={handleClick} className="cursor-pointer">
|
|
242
|
+
Click me
|
|
243
|
+
</div>
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**Fix:**
|
|
247
|
+
```tsx
|
|
248
|
+
<button onClick={handleClick} className="cursor-pointer">
|
|
249
|
+
Click me
|
|
250
|
+
</button>
|
|
251
|
+
// OR if div is required:
|
|
252
|
+
<div
|
|
253
|
+
role="button"
|
|
254
|
+
tabIndex={0}
|
|
255
|
+
onClick={handleClick}
|
|
256
|
+
onKeyDown={(e) => {
|
|
257
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
258
|
+
e.preventDefault();
|
|
259
|
+
handleClick();
|
|
260
|
+
}
|
|
261
|
+
}}
|
|
262
|
+
className="cursor-pointer"
|
|
263
|
+
>
|
|
264
|
+
Click me
|
|
265
|
+
</div>
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
### 2. ❌ Focus indicator removed without replacement
|
|
271
|
+
|
|
272
|
+
**File:** `app/components/ui/Button.tsx:23`
|
|
273
|
+
**Element:** `button`
|
|
274
|
+
**Problem:** `outline: none` without visible focus alternative
|
|
275
|
+
|
|
276
|
+
**Current:**
|
|
277
|
+
```css
|
|
278
|
+
button:focus {
|
|
279
|
+
outline: none;
|
|
280
|
+
}
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
**Fix:**
|
|
284
|
+
```css
|
|
285
|
+
button:focus-visible {
|
|
286
|
+
outline: 2px solid var(--color-focus-ring);
|
|
287
|
+
outline-offset: 2px;
|
|
288
|
+
}
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
### 3. ❌ Positive tabIndex (anti-pattern)
|
|
294
|
+
|
|
295
|
+
**File:** `app/components/forms/SearchInput.tsx:12`
|
|
296
|
+
**Element:** `<input tabIndex={1}>`
|
|
297
|
+
**Problem:** Positive tabIndex breaks natural tab order
|
|
298
|
+
|
|
299
|
+
**Fix:** Remove tabIndex or use tabIndex={0}
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
### 4. ❌ Modal without focus trap
|
|
304
|
+
|
|
305
|
+
**File:** `app/components/modals/ConfirmDialog.tsx:8`
|
|
306
|
+
**Element:** `Dialog`
|
|
307
|
+
**Problems:**
|
|
308
|
+
- Focus can escape modal with Tab
|
|
309
|
+
- No Escape key handler
|
|
310
|
+
- Focus not restored on close
|
|
311
|
+
|
|
312
|
+
**Required Implementation:**
|
|
313
|
+
- Add focus trap (first/last element loop)
|
|
314
|
+
- Add onKeyDown for Escape
|
|
315
|
+
- Store activeElement before open, restore on close
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## Tab Order Map
|
|
320
|
+
|
|
321
|
+
```
|
|
322
|
+
┌──────────────────────────────────────┐
|
|
323
|
+
│ 1. [Skip to content] │
|
|
324
|
+
│ 2. [Logo] → 3. [Nav: Home] │
|
|
325
|
+
│ 4. [Nav: Products] → 5. [Nav: About] │
|
|
326
|
+
│ 6. [Search input] │
|
|
327
|
+
│ 7. [Main content starts] │
|
|
328
|
+
│ ... │
|
|
329
|
+
│ ⚠️ 15. [Card div] - NOT FOCUSABLE │
|
|
330
|
+
│ 16. [Footer link 1] │
|
|
331
|
+
└──────────────────────────────────────┘
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
## Focus Indicator Inventory
|
|
335
|
+
|
|
336
|
+
| Component | Focus Style | Contrast | Status |
|
|
337
|
+
|-----------|-------------|----------|--------|
|
|
338
|
+
| Button | ring-2 ring-primary | 4.2:1 | ✅ Pass |
|
|
339
|
+
| Input | ring-2 ring-blue-500 | 3.8:1 | ✅ Pass |
|
|
340
|
+
| Link | underline + color | 3.1:1 | ✅ Pass |
|
|
341
|
+
| Card | outline: none | N/A | ❌ Fail |
|
|
342
|
+
| Tab | border-bottom | 2.1:1 | ⚠️ Low |
|
|
343
|
+
|
|
344
|
+
## Recommendations
|
|
345
|
+
|
|
346
|
+
1. **Replace all `<div onClick>` with `<button>`** - 6 occurrences
|
|
347
|
+
2. **Add focus-visible styles** - 5 components missing
|
|
348
|
+
3. **Remove positive tabIndex values** - 2 occurrences
|
|
349
|
+
4. **Implement focus trap in modals** - 2 modals affected
|
|
350
|
+
5. **Add Escape key handlers** - 3 dialogs missing
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## Auto-Fix (with --fix flag)
|
|
356
|
+
|
|
357
|
+
```typescript
|
|
358
|
+
// Auto-fixable patterns
|
|
359
|
+
|
|
360
|
+
// 1. Add tabIndex to onClick divs
|
|
361
|
+
- <div onClick={fn}>
|
|
362
|
+
+ <div onClick={fn} tabIndex={0} role="button" onKeyDown={handleKeyDown}>
|
|
363
|
+
|
|
364
|
+
// 2. Add focus-visible where outline:none
|
|
365
|
+
- button:focus { outline: none; }
|
|
366
|
+
+ button:focus-visible { outline: 2px solid var(--color-focus); outline-offset: 2px; }
|
|
367
|
+
|
|
368
|
+
// 3. Convert positive tabIndex
|
|
369
|
+
- <input tabIndex={1}>
|
|
370
|
+
+ <input tabIndex={0}>
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|
|
375
|
+
## Integration
|
|
376
|
+
|
|
377
|
+
```bash
|
|
378
|
+
# Full focus audit
|
|
379
|
+
*focus-order ./app/components
|
|
380
|
+
|
|
381
|
+
# Single component
|
|
382
|
+
*focus-order ./app/components --component Modal
|
|
383
|
+
|
|
384
|
+
# Generate visual map
|
|
385
|
+
*focus-order ./app/components --generate-map
|
|
386
|
+
|
|
387
|
+
# Auto-fix simple issues
|
|
388
|
+
*focus-order ./app/components --fix
|
|
389
|
+
|
|
390
|
+
# As part of full audit
|
|
391
|
+
*a11y-audit ./app/components --scope keyboard
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
## Failure Handling
|
|
397
|
+
|
|
398
|
+
- **No interactive elements discovered:** Verify scan includes all file types (.tsx, .jsx, .vue, .html). If truly zero, report "No interactive elements found"
|
|
399
|
+
- **Focus indicator detection misses Tailwind ring-* classes:** Expand scan patterns to include ring-*, outline-*, focus:*, focus-visible:* Tailwind utilities
|
|
400
|
+
- **Tab order mapping fails for dynamic content:** Document dynamic sections as "tab order varies at runtime — requires manual testing" in report
|
|
401
|
+
- **Auto-fix introduces breaking changes:** Generate fix suggestions as code comments instead of applying directly. Always preserve original code
|
|
402
|
+
|
|
403
|
+
## State Update
|
|
404
|
+
|
|
405
|
+
```yaml
|
|
406
|
+
focus_order_audit:
|
|
407
|
+
last_run: "2026-01-05T14:30:00Z"
|
|
408
|
+
path: "./app/components"
|
|
409
|
+
results:
|
|
410
|
+
total_issues: 38
|
|
411
|
+
critical: 14
|
|
412
|
+
serious: 17
|
|
413
|
+
moderate: 7
|
|
414
|
+
categories:
|
|
415
|
+
tab_order: 8
|
|
416
|
+
focus_indicators: 12
|
|
417
|
+
keyboard_handlers: 15
|
|
418
|
+
focus_traps: 3
|
|
419
|
+
anti_patterns:
|
|
420
|
+
click_only_divs: 6
|
|
421
|
+
positive_tabindex: 2
|
|
422
|
+
outline_none: 5
|
|
423
|
+
auto_fixed: 0
|
|
424
|
+
next_action: "Fix 14 critical keyboard issues"
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
---
|
|
428
|
+
|
|
429
|
+
## Success Criteria
|
|
430
|
+
|
|
431
|
+
- [ ] All interactive elements discovered (native + custom with click/key handlers)
|
|
432
|
+
- [ ] Tab order validated as logical and follows visual layout
|
|
433
|
+
- [ ] Focus indicators verified visible with sufficient contrast (3:1 minimum)
|
|
434
|
+
- [ ] Zero keyboard traps detected (or all documented with workarounds)
|
|
435
|
+
- [ ] Custom interactive elements have keyboard equivalents for mouse events
|
|
436
|
+
- [ ] Modal/dialog focus management validated (trap + restore)
|
|
437
|
+
- [ ] Report generated with file:line references for every finding
|
|
438
|
+
|
|
439
|
+
---
|
|
440
|
+
|
|
441
|
+
**Brad says:** "If you can't Tab to it, keyboard users can't use it. Zero click-only elements."
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
## Related Checklists
|
|
445
|
+
|
|
446
|
+
- `squads/design/checklists/ds-accessibility-wcag-checklist.md`
|
|
447
|
+
- `squads/design/checklists/ds-a11y-release-gate-checklist.md`
|
|
448
|
+
|
|
449
|
+
## Process Guards
|
|
450
|
+
- **On Fail:** Stop execution, capture evidence, and return remediation steps before proceeding.
|