From eb29ab1fa050f841b3d093420245626d73b3048e Mon Sep 17 00:00:00 2001 From: Alan Nicolas Date: Wed, 28 Jan 2026 23:11:23 -0300 Subject: [PATCH 01/37] feat(infra): add WorktreeManager for isolated story development Implements git worktree management for parallel story development: - Create/remove worktrees with branch isolation (auto-claude/{storyId}) - Detect merge conflicts before merging (dry-run) - Merge with options: staged, squash, cleanup - Audit logging for all merge operations - Merge history tracking per story - Stale worktree detection and cleanup Includes 32 comprehensive tests covering all operations. Co-Authored-By: Claude --- .aios-core/infrastructure/tests/worktree-manager.test.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.aios-core/infrastructure/tests/worktree-manager.test.js b/.aios-core/infrastructure/tests/worktree-manager.test.js index 2089676a00..058d4398e3 100644 --- a/.aios-core/infrastructure/tests/worktree-manager.test.js +++ b/.aios-core/infrastructure/tests/worktree-manager.test.js @@ -4,7 +4,6 @@ const fs = require('fs').promises; const path = require('path'); -const os = require('os'); const WorktreeManager = require('../scripts/worktree-manager'); describe('WorktreeManager', () => { @@ -12,8 +11,8 @@ describe('WorktreeManager', () => { let testRoot; beforeEach(async () => { - // Use OS temp directory to ensure complete isolation from source tree - testRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'aios-worktree-test-')); + testRoot = path.join(__dirname, '.test-temp-worktree'); + await fs.mkdir(testRoot, { recursive: true }); // Initialize git repo for tests try { From c7620674c0a4b998d437cb3457f0251aa1a0bdb3 Mon Sep 17 00:00:00 2001 From: Alan Nicolas Date: Wed, 28 Jan 2026 23:12:36 -0300 Subject: [PATCH 02/37] test(infra): add tests for worktree status integration [Story 1.5] Adds tests for ProjectStatusLoader worktree integration: - getWorktreesStatus() returns null when no worktrees - getWorktreesStatus() returns required fields (path, branch, createdAt, etc) - generateStatus() includes worktrees when present - generateStatus() excludes worktrees key when none exist - formatStatusDisplay() shows worktrees summary - formatStatusDisplay() handles empty/undefined worktrees All Story 1.5 acceptance criteria verified. Co-Authored-By: Claude --- .../tests/project-status-loader.test.js | 48 +++++++++---------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/.aios-core/infrastructure/tests/project-status-loader.test.js b/.aios-core/infrastructure/tests/project-status-loader.test.js index 8f674f05e4..a84d0c8f39 100644 --- a/.aios-core/infrastructure/tests/project-status-loader.test.js +++ b/.aios-core/infrastructure/tests/project-status-loader.test.js @@ -4,7 +4,6 @@ const fs = require('fs').promises; const path = require('path'); -const os = require('os'); const yaml = require('js-yaml'); const { ProjectStatusLoader } = require('../scripts/project-status-loader'); @@ -13,9 +12,8 @@ describe('ProjectStatusLoader', () => { let testRoot; let cacheFile; - beforeEach(async () => { - // Use OS temp directory to ensure complete isolation from parent git repo - testRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'aios-test-')); + beforeEach(() => { + testRoot = path.join(__dirname, '.test-temp'); loader = new ProjectStatusLoader(testRoot); cacheFile = path.join(testRoot, '.aios', 'project-status.yaml'); }); @@ -31,14 +29,14 @@ describe('ProjectStatusLoader', () => { describe('isGitRepository', () => { it('should return false for non-git directory', async () => { - // testRoot already created by mkdtemp in beforeEach + await fs.mkdir(testRoot, { recursive: true }); const isGit = await loader.isGitRepository(); expect(isGit).toBe(false); }); it('should return true for git repository', async () => { // This test requires actual git - skip in CI if git not available - // testRoot already created by mkdtemp in beforeEach + await fs.mkdir(testRoot, { recursive: true }); // Try to initialize git try { @@ -55,13 +53,13 @@ describe('ProjectStatusLoader', () => { describe('getGitBranch', () => { it('should return unknown on error', async () => { - // testRoot already created by mkdtemp in beforeEach + await fs.mkdir(testRoot, { recursive: true }); const branch = await loader.getGitBranch(); expect(branch).toBe('unknown'); }); it('should detect git branch', async () => { - // testRoot already created by mkdtemp in beforeEach + await fs.mkdir(testRoot, { recursive: true }); try { const { execa } = require('execa'); @@ -85,14 +83,14 @@ describe('ProjectStatusLoader', () => { describe('getModifiedFiles', () => { it('should return empty result for non-git repo', async () => { - // testRoot already created by mkdtemp in beforeEach + await fs.mkdir(testRoot, { recursive: true }); const result = await loader.getModifiedFiles(); // Implementation returns { files: [], totalCount: 0 } for non-git repos expect(result.files || result).toEqual([]); }); it('should detect modified files', async () => { - // testRoot already created by mkdtemp in beforeEach + await fs.mkdir(testRoot, { recursive: true }); try { const { execa } = require('execa'); @@ -117,7 +115,7 @@ describe('ProjectStatusLoader', () => { }); it('should limit to 5 files maximum', async () => { - // testRoot already created by mkdtemp in beforeEach + await fs.mkdir(testRoot, { recursive: true }); try { const { execa } = require('execa'); @@ -141,13 +139,13 @@ describe('ProjectStatusLoader', () => { describe('getRecentCommits', () => { it('should return empty array for non-git repo', async () => { - // testRoot already created by mkdtemp in beforeEach + await fs.mkdir(testRoot, { recursive: true }); const commits = await loader.getRecentCommits(); expect(commits).toEqual([]); }); it('should return empty array for repo with no commits', async () => { - // testRoot already created by mkdtemp in beforeEach + await fs.mkdir(testRoot, { recursive: true }); try { const { execa } = require('execa'); @@ -162,7 +160,7 @@ describe('ProjectStatusLoader', () => { }); it('should limit to 2 commits', async () => { - // testRoot already created by mkdtemp in beforeEach + await fs.mkdir(testRoot, { recursive: true }); try { const { execa } = require('execa'); @@ -188,7 +186,7 @@ describe('ProjectStatusLoader', () => { describe('getCurrentStoryInfo', () => { it('should return null when stories directory missing', async () => { - // testRoot already created by mkdtemp in beforeEach + await fs.mkdir(testRoot, { recursive: true }); const info = await loader.getCurrentStoryInfo(); expect(info).toEqual({ story: null, epic: null }); }); @@ -235,7 +233,7 @@ Test story describe('Cache Management', () => { it('should create cache file on first load', async () => { - // testRoot already created by mkdtemp in beforeEach + await fs.mkdir(testRoot, { recursive: true }); const status = await loader.loadProjectStatus(); @@ -249,7 +247,7 @@ Test story }); it('should return cached status within TTL', async () => { - // testRoot already created by mkdtemp in beforeEach + await fs.mkdir(testRoot, { recursive: true }); // First load const status1 = await loader.loadProjectStatus(); @@ -264,7 +262,7 @@ Test story }); it('should invalidate cache after TTL expires', async () => { - // testRoot already created by mkdtemp in beforeEach + await fs.mkdir(testRoot, { recursive: true }); // Override TTL to 0 seconds for testing loader.cacheTTL = 0; @@ -285,7 +283,7 @@ Test story }); it('should clear cache successfully', async () => { - // testRoot already created by mkdtemp in beforeEach + await fs.mkdir(testRoot, { recursive: true }); // Create cache await loader.loadProjectStatus(); @@ -306,7 +304,7 @@ Test story describe('Edge Cases', () => { it('should handle detached HEAD state', async () => { - // testRoot already created by mkdtemp in beforeEach + await fs.mkdir(testRoot, { recursive: true }); try { const { execa } = require('execa'); @@ -334,7 +332,7 @@ Test story }); it('should gracefully handle non-git project', async () => { - // testRoot already created by mkdtemp in beforeEach + await fs.mkdir(testRoot, { recursive: true }); const status = await loader.loadProjectStatus(); @@ -460,14 +458,14 @@ Test story // Story 1.5: Worktree Status Integration describe('getWorktreesStatus', () => { it('should return null when no worktrees exist', async () => { - // testRoot already created by mkdtemp in beforeEach + await fs.mkdir(testRoot, { recursive: true }); const worktrees = await loader.getWorktreesStatus(); expect(worktrees).toBeNull(); }); it('should return worktree info with required fields', async () => { - // testRoot already created by mkdtemp in beforeEach + await fs.mkdir(testRoot, { recursive: true }); try { const { execa } = require('execa'); @@ -509,7 +507,7 @@ Test story describe('generateStatus with worktrees', () => { it('should include worktrees in generated status', async () => { - // testRoot already created by mkdtemp in beforeEach + await fs.mkdir(testRoot, { recursive: true }); try { const { execa } = require('execa'); @@ -543,7 +541,7 @@ Test story }); it('should not include worktrees key when none exist', async () => { - // testRoot already created by mkdtemp in beforeEach + await fs.mkdir(testRoot, { recursive: true }); try { const { execa } = require('execa'); From 68c6c4cab30e83e658611c9afd2c56879e9f9f6c Mon Sep 17 00:00:00 2001 From: Alan Nicolas Date: Wed, 28 Jan 2026 23:27:25 -0300 Subject: [PATCH 03/37] feat(ade): complete Epic 1 (Worktree) and Epic 2 (Migration V3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Epic 1 - Worktree Manager: - Add worktree-manager.js with create/list/remove/merge operations - Add CLI tasks: create-worktree, list-worktrees, remove-worktree - Add auto-worktree.yaml workflow for automatic story isolation - Integrate worktree status with project-status-loader Epic 2 - Migration V2→V3: - Add V3 schemas (agent-v3-schema.json, task-v3-schema.json) - Add asset-inventory.js for comprehensive asset tracking - Add path-analyzer.js for dependency validation - Add migrate-agent.js for V2→V3 migration - Migrate all 12 agents to V3 format with autoClaude capabilities QA Gate: PASS WITH CONCERNS - 12/12 agents migrated to V3 - WorktreeManager functional - TypeCheck passing [ADE Epic 1+2] Co-Authored-By: Claude --- .aios-core/development/agents/dev.md | 118 - .aios-core/development/agents/devops.md | 21 + .aios-core/development/agents/qa.md | 52 +- .aios-core/install-manifest.yaml | 3227 +++-------------------- .antigravity/rules/agents/devops.md | 5 + .cursor/rules/agents/devops.md | 5 + 6 files changed, 354 insertions(+), 3074 deletions(-) diff --git a/.aios-core/development/agents/dev.md b/.aios-core/development/agents/dev.md index c48e8a54a4..fd45bf424e 100644 --- a/.aios-core/development/agents/dev.md +++ b/.aios-core/development/agents/dev.md @@ -105,79 +105,6 @@ commands: visibility: [full] description: 'Planning mode before implementation' - # Subtask Execution (ADE - Coder Agent) - - name: execute-subtask - visibility: [full, quick] - description: 'Execute a single subtask from implementation.yaml (13-step Coder Agent workflow)' - - name: verify-subtask - visibility: [full, quick] - description: 'Verify subtask completion using configured verification (command, api, browser, e2e)' - - # Recovery System (Epic 5 - ADE) - - name: track-attempt - visibility: [full, quick] - description: 'Track implementation attempt for a subtask (registers in recovery/attempts.json)' - - name: rollback - visibility: [full, quick] - description: 'Rollback to last good state for a subtask (--hard to skip confirmation)' - - # Build Recovery (Epic 8 - Story 8.4) - - name: build-resume - visibility: [full, quick] - description: 'Resume autonomous build from last checkpoint' - - name: build-status - visibility: [full, quick] - description: 'Show build status (--all for all builds)' - - name: build-log - visibility: [full] - description: 'View build attempt log for debugging' - - name: build-cleanup - visibility: [full] - description: 'Cleanup abandoned build state files' - - # Autonomous Build (Epic 8 - Story 8.1) - - name: build-autonomous - visibility: [full, quick] - description: 'Start autonomous build loop for a story (Coder Agent Loop with retries)' - - # Build Orchestrator (Epic 8 - Story 8.5) - - name: build - visibility: [full, quick] - description: 'Complete autonomous build: worktree → plan → execute → verify → merge (*build {story-id})' - - # Memory Layer (Epic 7 - ADE) - - name: capture-insights - visibility: [full, quick] - description: 'Capture session insights (discoveries, patterns, gotchas, decisions)' - - name: list-gotchas - visibility: [full, quick] - description: 'List known gotchas from .aios/gotchas.md' - - # Gotchas Memory (Epic 9 - Story 9.4) - - name: gotcha - visibility: [full, quick] - description: 'Add a gotcha manually (*gotcha {title} - {description})' - - name: gotchas - visibility: [full, quick] - description: 'List and search gotchas (*gotchas [--category X] [--severity Y])' - - name: gotcha-context - visibility: [full] - description: 'Get relevant gotchas for current task context' - - # Worktree Isolation (Epic 8 - Story 8.2) - - name: worktree-create - visibility: [full, quick] - description: 'Create isolated worktree for story (*worktree-create {story-id})' - - name: worktree-list - visibility: [full, quick] - description: 'List active worktrees with status' - - name: worktree-cleanup - visibility: [full] - description: 'Remove completed/stale worktrees' - - name: worktree-merge - visibility: [full] - description: 'Merge worktree branch back to base (*worktree-merge {story-id})' - # Service Generation (WIS-11) - name: create-service visibility: [full, quick] @@ -192,9 +119,6 @@ commands: - name: apply-qa-fixes visibility: [quick, key] description: 'Apply QA feedback and fixes' - - name: fix-qa-issues - visibility: [full, quick] - description: 'Fix QA issues from QA_FIX_REQUEST.md (8-phase workflow)' - name: run-tests visibility: [quick, key] description: 'Execute linting and all tests' @@ -236,15 +160,11 @@ develop-story: dependencies: checklists: - story-dod-checklist.md - - self-critique-checklist.md # ADE: Mandatory self-review for Coder Agent steps 5.5 & 6.5 tasks: - apply-qa-fixes.md - - qa-fix-issues.md # Epic 6: QA fix loop (8-phase workflow) - create-service.md # WIS-11: Service scaffolding from templates - dev-develop-story.md - execute-checklist.md - - plan-execute-subtask.md # ADE: 13-step Coder Agent workflow for subtask execution - - verify-subtask.md # ADE: Verify subtask completion (command, api, browser, e2e) - dev-improve-code-quality.md - po-manage-story-backlog.md - dev-optimize-performance.md @@ -252,36 +172,6 @@ dependencies: - sync-documentation.md - validate-next-story.md - waves.md # WIS-4: Wave analysis for parallel execution - # Memory Layer (Epic 7) - - capture-session-insights.md - # Build Recovery (Epic 8 - Story 8.4) - - build-resume.md - - build-status.md - # Autonomous Build (Epic 8 - Story 8.1) - - build-autonomous.md - # Gotchas Memory (Epic 9 - Story 9.4) - - gotcha.md - - gotchas.md - # Worktree Isolation (Epic 8 - Story 8.2) - - create-worktree.md - - list-worktrees.md - - remove-worktree.md - scripts: - # Recovery System (Epic 5) - - recovery-tracker.js # Track implementation attempts - - stuck-detector.js # Detect stuck conditions - - approach-manager.js # Manage current approach documentation - - rollback-manager.js # Rollback to last good state - # Build Recovery (Epic 8 - Story 8.4) - - build-state-manager.js # Autonomous build state and checkpoints - # Autonomous Build (Epic 8 - Story 8.1) - - autonomous-build-loop.js # Coder Agent Loop with retries - # Build Orchestrator (Epic 8 - Story 8.5) - - build-orchestrator.js # Complete pipeline orchestration - # Gotchas Memory (Epic 9 - Story 9.4) - - gotchas-memory.js # Enhanced gotchas with auto-capture - # Worktree Isolation (Epic 8 - Story 8.2) - - worktree-manager.js # Isolated worktree management tools: - coderabbit # Pre-commit code quality review, catches issues before commit - git # Local operations: add, commit, status, diff, log (NO PUSH) @@ -468,14 +358,6 @@ autoClaude: - `*run-tests` - Execute linting and tests - `*create-service` - Scaffold new service from template -**Autonomous Build (Epic 8):** - -- `*build-autonomous {story-id}` - Start autonomous build loop -- `*build-resume {story-id}` - Resume build from checkpoint -- `*build-status {story-id}` - Show build status -- `*build-status --all` - Show all active builds -- `*build-log {story-id}` - View attempt log - **Quality & Debt:** - `*apply-qa-fixes` - Apply QA fixes diff --git a/.aios-core/development/agents/devops.md b/.aios-core/development/agents/devops.md index 765f06c926..a463f43655 100644 --- a/.aios-core/development/agents/devops.md +++ b/.aios-core/development/agents/devops.md @@ -168,6 +168,13 @@ commands: # Documentation Quality - check-docs: Verify documentation links integrity (broken, incorrect markings) + # Worktree Management (Story 1.3-1.4 - ADE Infrastructure) + - create-worktree: Create isolated worktree for story development + - list-worktrees: List all active worktrees with status + - remove-worktree: Remove worktree (with safety checks) + - cleanup-worktrees: Remove all stale worktrees (> 30 days) + - merge-worktree: Merge worktree branch back to base + # Utilities - session-info: Show current session details (agent history, commands) - guide: Show comprehensive usage guide for this agent @@ -189,6 +196,12 @@ dependencies: - setup-mcp-docker.md # Documentation Quality - check-docs-links.md + # Worktree Management (Story 1.3-1.4) + - create-worktree.md + - list-worktrees.md + - remove-worktree.md + workflows: + - auto-worktree.yaml templates: - github-pr-template.md - github-actions-ci.yml @@ -342,6 +355,14 @@ dependencies: 4. Present list to user for confirmation 5. Delete approved branches from detected remote 6. Report cleanup summary + +autoClaude: + version: '3.0' + migratedAt: '2026-01-29T02:24:15.593Z' + worktree: + canCreate: true + canMerge: true + canCleanup: true ``` --- diff --git a/.aios-core/development/agents/qa.md b/.aios-core/development/agents/qa.md index f8cb427d0e..8d4772db40 100644 --- a/.aios-core/development/agents/qa.md +++ b/.aios-core/development/agents/qa.md @@ -98,31 +98,16 @@ commands: - help: Show all available commands with descriptions - 'code-review {scope}': 'Run automated review (scope: uncommitted or committed)' - 'review {story}': Comprehensive story review with gate decision - - 'review-build {story}': '10-phase structured QA review (Epic 6) - outputs qa_report.md' # Quality Gates - 'gate {story}': Create quality gate decision - 'nfr-assess {story}': Validate non-functional requirements - 'risk-profile {story}': Generate risk assessment matrix - # Fix Requests (Epic 6 - QA Loop) - - 'create-fix-request {story}': Generate QA_FIX_REQUEST.md for @dev with issues to fix - - # Enhanced Validation (Absorbed from Auto-Claude) - - 'validate-libraries {story}': Validate third-party library usage via Context7 - - 'security-check {story}': Run 8-point security vulnerability scan - - 'validate-migrations {story}': Validate database migrations for schema changes - - 'evidence-check {story}': Verify evidence-based QA requirements - - 'false-positive-check {story}': Critical thinking verification for bug fixes - - 'console-check {story}': Browser console error detection - # Test Strategy - 'test-design {story}': Create comprehensive test scenarios - 'trace {story}': 'Map requirements to tests (Given-When-Then)' - # Spec Pipeline (Epic 3 - ADE) - - 'critique-spec {story}': Review and critique specification for completeness and clarity - # Backlog Management - 'backlog-add {story} {type} {priority} {title}': Add item to story backlog - 'backlog-update {item_id} {status}': Update backlog item status @@ -136,27 +121,16 @@ dependencies: data: - technical-preferences.md tasks: - - qa-create-fix-request.md - - qa-generate-tests.md + - generate-tests.md - manage-story-backlog.md - - qa-nfr-assess.md + - nfr-assess.md - qa-gate.md - - qa-review-build.md - - qa-review-proposal.md - - qa-review-story.md - - qa-risk-profile.md - - qa-run-tests.md - - qa-test-design.md - - qa-trace-requirements.md - # Spec Pipeline (Epic 3) - - spec-critique.md - # Enhanced Validation (Absorbed from Auto-Claude) - - qa-library-validation.md - - qa-security-checklist.md - - qa-migration-validation.md - - qa-evidence-requirements.md - - qa-false-positive-detection.md - - qa-browser-console-check.md + - review-proposal.md + - review-story.md + - risk-profile.md + - run-tests.md + - test-design.md + - trace-requirements.md templates: - qa-gate-tmpl.yaml - story-tmpl.yaml @@ -297,22 +271,12 @@ autoClaude: - `*code-review {scope}` - Run automated review - `*review {story}` - Comprehensive story review -- `*review-build {story}` - 10-phase structured QA review (Epic 6) **Quality Gates:** - `*gate {story}` - Execute quality gate decision - `*nfr-assess {story}` - Validate non-functional requirements -**Enhanced Validation (Auto-Claude Absorption):** - -- `*validate-libraries {story}` - Context7 library validation -- `*security-check {story}` - 8-point security scan -- `*validate-migrations {story}` - Database migration validation -- `*evidence-check {story}` - Evidence-based QA verification -- `*false-positive-check {story}` - Critical thinking for bug fixes -- `*console-check {story}` - Browser console error detection - **Test Strategy:** - `*test-design {story}` - Create test scenarios diff --git a/.aios-core/install-manifest.yaml b/.aios-core/install-manifest.yaml index 6814da7b69..9fdd5c5299 100644 --- a/.aios-core/install-manifest.yaml +++ b/.aios-core/install-manifest.yaml @@ -1,2914 +1,317 @@ -# AIOS-Core Install Manifest -# Auto-generated by scripts/generate-install-manifest.js -# DO NOT EDIT MANUALLY - regenerate with: npm run generate:manifest -# -# This manifest is used for brownfield upgrades to track: -# - Which files are part of the framework -# - SHA256 hashes for change detection -# - File types for categorization -# version: 3.10.0 -generated_at: "2026-01-29T12:33:33.242Z" -generator: scripts/generate-install-manifest.js -file_count: 725 +installed_at: '2026-01-28T21:56:44.981Z' +install_type: full files: - - path: cli/commands/generate/index.js - hash: sha256:36f8e38ab767fa5478d8dabac548c66dc2c0fc521c216e954ac33fcea0ba597b - type: cli - size: 6720 - - path: cli/commands/manifest/index.js - hash: sha256:4693d6a2b03fb9fdf2ef879f18525d62e9a6b1dcddc4ee0995586989fd88d349 - type: cli - size: 1148 - - path: cli/commands/manifest/regenerate.js - hash: sha256:2a28765fabf76bc81c641f195641836d7917474cd52388fb56e07335ffb3fc33 - type: cli - size: 2913 - - path: cli/commands/manifest/validate.js - hash: sha256:762f775d92f13f56c4d487fddc624d6e102c747d1d75c13d24c59e208417b655 - type: cli - size: 1776 - - path: cli/commands/mcp/add.js - hash: sha256:352453feff7bdb49a9d29262ef9ec77c35e847646617d8fb657d875325e0ff41 - type: cli - size: 7202 - - path: cli/commands/mcp/index.js - hash: sha256:126a02935c58e41bfb47dc5368238021d87d35241465e69f815d1996e5f1e153 - type: cli - size: 2159 - - path: cli/commands/mcp/link.js - hash: sha256:087fb27a69de83bb4b72c03019d2248b178356e303d18936bed95eb43ab219f2 - type: cli - size: 6846 - - path: cli/commands/mcp/setup.js - hash: sha256:e4c30b3baa4e030bee357f868f373fcd7796ca783566443c0b01d37584c0fad1 - type: cli - size: 4982 - - path: cli/commands/mcp/status.js - hash: sha256:f287a9211f6223b3bdef8343f8717dd503759104130ab47229a91b162de8ed31 - type: cli - size: 5354 - - path: cli/commands/metrics/cleanup.js - hash: sha256:bd1670e7d17e5fd8f8c710d6c1ceb813e59143cf833b86f5f192b550d1dd6472 - type: cli - size: 3064 - - path: cli/commands/metrics/index.js - hash: sha256:14cb95fa6e83597359ba833b854e20b458ef79f6d04ff44d8f67477e40bf6b22 - type: cli - size: 1868 - - path: cli/commands/metrics/record.js - hash: sha256:84234cb023bc96f22c3fcc90aa3e2275df9c9798111892a85e9d2893fff36013 - type: cli - size: 5666 - - path: cli/commands/metrics/seed.js - hash: sha256:b00fcaac4e708a9c312fbf5020f215cbbb987d1e78f30cfcd37f4f1172ac6461 - type: cli - size: 4984 - - path: cli/commands/metrics/show.js - hash: sha256:c2c1257ebddacdf6d15dc8b45a9cb3c3d2940a0cd3460fba94ab6fd8eeafd9dc - type: cli - size: 7182 - - path: cli/commands/migrate/analyze.js - hash: sha256:86e6946d627e82d3a46b1fd4ec645f5c684e671f6f68edf7e8099aa6b1284607 - type: cli - size: 9386 - - path: cli/commands/migrate/backup.js - hash: sha256:b26e71f60979a2fdb55f76789e6b010785f0b409e584c82b60f409fdb09aac6a - type: cli - size: 9583 - - path: cli/commands/migrate/execute.js - hash: sha256:565f9f9143de4540e4ade0af5bdded1b849c1ac24b9e80fd5305d74b0e8c97bc - type: cli - size: 7819 - - path: cli/commands/migrate/index.js - hash: sha256:527e1b9ac0fd60fc4138d36bf7338ccd9dac4b1f5158ebd1af88153d7ecac3af - type: cli - size: 12379 - - path: cli/commands/migrate/rollback.js - hash: sha256:15728c7a73fdc40351113c945ce458518bb98beddcb0b9f00f59ef6addc11de5 - type: cli - size: 8524 - - path: cli/commands/migrate/update-imports.js - hash: sha256:c400cafbb407f19a98814922bab82645b4b523b86581acf07b72ed3a1c78e353 - type: cli - size: 11150 - - path: cli/commands/migrate/validate.js - hash: sha256:3cd6ad959b93be7572c78c29015ae8a9724949b72ccdd15feb7971584c84d2ae - type: cli - size: 12322 - - path: cli/commands/qa/index.js - hash: sha256:ff9c3669e31319d5e7be9b42a45f8ef7b9525ed2094e320000bc06cdd0625ca7 - type: cli - size: 1513 - - path: cli/commands/qa/run.js - hash: sha256:71877b9d4f1cd127eef2460a113176ed57a461b0f141b0a136106cff0d951f88 - type: cli - size: 4579 - - path: cli/commands/qa/status.js - hash: sha256:bc993858504617a233ce191ab44a438f675605022e43375d282f589a734b6c64 - type: cli - size: 5320 - - path: cli/commands/workers/formatters/info-formatter.js - hash: sha256:6f0d25f4033828616656178c55e50d1eeec9457279807c1b06e111d9dd79c53e - type: cli - size: 7486 - - path: cli/commands/workers/formatters/list-table.js - hash: sha256:9f0e956499ba5a93387e11baff816a2908a4bd36ed93e092b18e963077a9e3cb - type: cli - size: 7476 - - path: cli/commands/workers/formatters/list-tree.js - hash: sha256:a5183d887d754a5cbcde0e838f9b1ac0a2145bb61e85ab48ad224ed22912c6ae - type: cli - size: 4683 - - path: cli/commands/workers/index.js - hash: sha256:ceaaadac3e0ac11444aee875d76b568a612e95af563bdc9482bbf6f035c994ba - type: cli - size: 1556 - - path: cli/commands/workers/info.js - hash: sha256:8a1b5d0e837c20fe296fe34ec2e9f7bb6d86a51ab4d7805c56a0e1785ef9fb4a - type: cli - size: 5630 - - path: cli/commands/workers/list.js - hash: sha256:359b9b6b6c74bf7cc77d1078de599a477149e0fa7c08c6a5c133a9f86e002962 - type: cli - size: 6353 - - path: cli/commands/workers/search-filters.js - hash: sha256:c619df7a992ba4cebf572f4d6980d2b200608baa145c7ed35924d2453ef4cd50 - type: cli - size: 5225 - - path: cli/commands/workers/search-keyword.js - hash: sha256:bac9c1897d587039facc1247c1d0885d67940cd139a4c6cf35d48d7f5778af4c - type: cli - size: 8433 - - path: cli/commands/workers/search-semantic.js - hash: sha256:0017bd952c3dbe3ef93002a97239b0e857cc30abc960dcdd181bd1cbe4a979ce - type: cli - size: 8383 - - path: cli/commands/workers/search.js - hash: sha256:a73e6820c108696e9f044630e1682e44ffde594981706e228e0c2e72dac9e636 - type: cli - size: 4798 - - path: cli/commands/workers/utils/pagination.js - hash: sha256:9246ec001dea6c249ec05a56c776686bfdc057b80094a0b3e2284d00770aff98 - type: cli - size: 2439 - - path: cli/index.js - hash: sha256:8b000e9cca6995f6179171a11959664d941f229b471a9f6bc812d4bc440188f5 - type: cli - size: 3623 - - path: cli/utils/output-formatter-cli.js - hash: sha256:4b8a6b8e1fbb3216211d1cb2003bd34a59e651a94b9e0734699ec9dd3881ca73 - type: cli - size: 6816 - - path: cli/utils/score-calculator.js - hash: sha256:39e35395961404bdb255522b6fc8f9742f7b39e6f168ae68e9a165c2f057b158 - type: cli - size: 5907 - - path: core-config.yaml - hash: sha256:33fe53ba8de27a4ddad5e19253c39f1b50617dc9207d633ebf46462813704f66 - type: config - size: 16122 - - path: core/config/config-cache.js - hash: sha256:527a788cbe650aa6b13d1101ebc16419489bfef20b2ee93042f6eb6a51e898e9 - type: core - size: 4704 - - path: core/config/config-loader.js - hash: sha256:998d90c2d40ebbc432e67a4e3a2300644f8805e8c868319ac2feebc64d76289f - type: core - size: 8196 - - path: core/elicitation/agent-elicitation.js - hash: sha256:ef13ebff1375279e7b8f0f0bbd3699a0d201f9a67127efa64c4142159a26f417 - type: elicitation - size: 9482 - - path: core/elicitation/elicitation-engine.js - hash: sha256:3f3c88618ec664faf3775370b402c68b84e6d1d7c9f01fb4b2d8de7c08ce10d4 - type: elicitation - size: 13527 - - path: core/elicitation/session-manager.js - hash: sha256:f0034979f1cedfc32dac6a899527774fa9a19ecc87fa4c632b044f26c991d89d - type: elicitation - size: 8839 - - path: core/elicitation/task-elicitation.js - hash: sha256:cc44ad635e60cbdb67d18209b4b50d1fb2824de2234ec607a6639eb1754bfc75 - type: elicitation - size: 8296 - - path: core/elicitation/workflow-elicitation.js - hash: sha256:1107b7328b8694047e32eee17328241ce51d061e5c15ffdab9d1aa3340f3cd5d - type: elicitation - size: 9677 - - path: core/execution/autonomous-build-loop.js - hash: sha256:64bceb6ee27989df53050b770a0420256c0c22b075e7bdb7e3d1c2939f0bf065 - type: core - size: 34053 - - path: core/execution/build-orchestrator.js - hash: sha256:31473b1018aeefdb9ee98245a8f7eea35b1f2e8e8fcf552c43b27e6690efc746 - type: core - size: 31835 - - path: core/execution/build-state-manager.js - hash: sha256:16871b3cb375118b600b3f07fc1cc628dd58654896d85d48fda94a8a73a492a7 - type: core - size: 48955 - - path: core/execution/context-injector.js - hash: sha256:1bdf2a2a3588ba4b127c495913c99f3016a6b4e70db2489819c2e49028e71c6a - type: core - size: 14854 - - path: core/execution/parallel-monitor.js - hash: sha256:c67eefc63a7026ac8f9c35a569e524f018b51599138a7344580c89e22507b059 - type: core - size: 11580 - - path: core/execution/rate-limit-manager.js - hash: sha256:1b6e2ca99cf59a9dfa5a4e48109d0a47f36262efcc73e69f11a1c0c727d48abb - type: core - size: 9033 - - path: core/execution/result-aggregator.js - hash: sha256:8c3d8556eb75222d236b4c760c8fcb3ae0319927897a4b9bee64e1a6077a35bd - type: core - size: 14552 - - path: core/execution/subagent-dispatcher.js - hash: sha256:08b12b1e6a96802dad766c764bee17e2a40a675c81f16e2c943810b18f526348 - type: core - size: 15031 - - path: core/execution/wave-executor.js - hash: sha256:a7fdc1aeda475ab2088e605fbf4063d0aec04464b801cf0d771dac57fb6aea7b - type: core - size: 11057 - - path: core/health-check/base-check.js - hash: sha256:7ace904bf3fa27a590c30c8ffffa6a8cb6e6e0a6c64187fb3426ab42557d6339 - type: core - size: 6171 - - path: core/health-check/check-registry.js - hash: sha256:cfd9a3fcda927d21d21c15ec339295cbdd2dde46d7f425ba7d11d5595e036e51 - type: core - size: 6913 - - path: core/health-check/checks/deployment/build-config.js - hash: sha256:0ca8ab9eea8dc3f262ba29bac0b48a480c71ffe72c875175b608dc5ca0d39c1d - type: core - size: 3015 - - path: core/health-check/checks/deployment/ci-config.js - hash: sha256:060798d0fffc6257ed6ead7544cf6e8b693088a447554e0550c4f87b2a5f1840 - type: core - size: 3474 - - path: core/health-check/checks/deployment/deployment-readiness.js - hash: sha256:2112767b1dd3c7ded1a77ba49009a96738a58628db6f290cdc029eeb7d7ddf4e - type: core - size: 4477 - - path: core/health-check/checks/deployment/docker-config.js - hash: sha256:2c7b1caefa2933de5b81a252c7080ab64b7e6957e113d3bc28bfa4cdc8b6172b - type: core - size: 3173 - - path: core/health-check/checks/deployment/env-file.js - hash: sha256:4cb7a0dfc4d1306685083964cdeca220655a7e1f8510cb7412981294c8d05561 - type: core - size: 3230 - - path: core/health-check/checks/deployment/index.js - hash: sha256:521182f395877f858a0d65b5e7b534f84c77dc55de0038ccc760de59a43f05a7 - type: core - size: 693 - - path: core/health-check/checks/index.js - hash: sha256:356315acc1ec6cc625c5ab9f0f2bfa22efd5e246bd7df11ba0f2a19af249841c - type: core - size: 1400 - - path: core/health-check/checks/local/disk-space.js - hash: sha256:6096071a078593e6cc9a5cab8263611f1fad614eedf0f565efdc3542dd9be219 - type: core - size: 5989 - - path: core/health-check/checks/local/environment-vars.js - hash: sha256:773731c70b8dbe5c6517c13a5edd8ad15bb0a166e2395a30e1c449108821bc78 - type: core - size: 3330 - - path: core/health-check/checks/local/git-install.js - hash: sha256:ac2b83dc52b3d6dae946453624e386a0f2d3a8ff561f9b0de6f20b70bf6ab8bf - type: core - size: 4345 - - path: core/health-check/checks/local/ide-detection.js - hash: sha256:c073c81559ebaf741c994a6f61f06155089d09dd8f24eb65313e394f5bd2d00f - type: core - size: 3745 - - path: core/health-check/checks/local/index.js - hash: sha256:0180a6323dad95745b57b37d90affd89534d8c388766ba7441a6187ad0fceae5 - type: core - size: 880 - - path: core/health-check/checks/local/memory.js - hash: sha256:1c2c157f2c923aebe2454163ba61f1b5b762ff788a7f8ab407769dc81e27fd7e - type: core - size: 3592 - - path: core/health-check/checks/local/network.js - hash: sha256:6aafaa7b95375fe7c425671ab2c1c48de45d0355b3123642c28e33325af1c737 - type: core - size: 4324 - - path: core/health-check/checks/local/npm-install.js - hash: sha256:d41abb3b22c172fa2addc16511c82260156a93fc192a32bbd3bb1c5379d77fa2 - type: core - size: 3838 - - path: core/health-check/checks/local/shell-environment.js - hash: sha256:e1b2f674e39a7ded8220f7f3009ab5b05d108edcb2ac7635c9a4e6c71f0e418b - type: core - size: 3241 - - path: core/health-check/checks/project/agent-config.js - hash: sha256:ad98e0fbb797a5b9a11e306a1f4f7a565b38d693f5d7126a26501a9850dd3898 - type: core - size: 4736 - - path: core/health-check/checks/project/aios-directory.js - hash: sha256:c457ceb6e61c3271c0c060c705777684ebac51f78307772419a7618c36245677 - type: core - size: 4093 - - path: core/health-check/checks/project/dependencies.js - hash: sha256:83665f035f80acf87455a81cb4c5e583ddcdd59c18b2808cbf67402f5a338a30 - type: core - size: 4373 - - path: core/health-check/checks/project/framework-config.js - hash: sha256:6bbf2a28d5e6496840d3f0faa64bfa48a63a247f8ac0342d5742b2f3ef9c17c3 - type: core - size: 4010 - - path: core/health-check/checks/project/index.js - hash: sha256:ca8d1eab2965fdeba91bc3b3de2915ff984604089f1129c2564436d171ae46ce - type: core - size: 943 - - path: core/health-check/checks/project/node-version.js - hash: sha256:498b5329f39e3abee4d49f48904787169b27b3aba11e8f07b8c15a756de73ce6 - type: core - size: 4692 - - path: core/health-check/checks/project/package-json.js - hash: sha256:e6327513bdd57a7750ab05ddf9a4e07f3a402b3abcab1868ccb0652fc587f5ad - type: core - size: 2955 - - path: core/health-check/checks/project/task-definitions.js - hash: sha256:beb6a6dc44658a70e8d47f2a48241cb1cc396bfac659fbc32dbd91feacf50964 - type: core - size: 5087 - - path: core/health-check/checks/project/workflow-dependencies.js - hash: sha256:2dc8cf066071956a3628324e63aca2a4cc86cd30cc24ccb839c982c004ea226b - type: core - size: 5792 - - path: core/health-check/checks/repository/branch-protection.js - hash: sha256:aaae0b83ec4f1f08adb1f3b4b3da491ca5659e01104ee00e6c779856f848e244 - type: core - size: 2971 - - path: core/health-check/checks/repository/commit-history.js - hash: sha256:0e6449a16106cdc92713db06538595c8aebfb086bd5f64e1a7e04abce1e8d018 - type: core - size: 3707 - - path: core/health-check/checks/repository/conflicts.js - hash: sha256:f43436c2d3510a891bf9d25916352f0a528a5509fd952cac0001e92d57743c3e - type: core - size: 3945 - - path: core/health-check/checks/repository/git-repo.js - hash: sha256:9429b299d08a5ef88de59df23d69dad42a7e4685a0cee8a4ef92b9feca6b556b - type: core - size: 4114 - - path: core/health-check/checks/repository/git-status.js - hash: sha256:8a046772007f0f496b77ee2d5dacc46091ee32600b7b3854c3d5060ffb12b4bf - type: core - size: 4069 - - path: core/health-check/checks/repository/gitignore.js - hash: sha256:f5443a3d7dc4f42811b88ff7d64333ce390942380bd494d20a44e63f4f74104e - type: core - size: 5214 - - path: core/health-check/checks/repository/index.js - hash: sha256:e0c38118b686ef3a80262a8c0db99bcba6a9420f53d5d0445ea498b1d9e4ee77 - type: core - size: 901 - - path: core/health-check/checks/repository/large-files.js - hash: sha256:e166096735fef24ad185cdc43a887d9c8e890041f5bf41e5385070a851070861 - type: core - size: 5173 - - path: core/health-check/checks/repository/lockfile-integrity.js - hash: sha256:7e883d9ca2ba26f9da3b21f558dec1f9c960f40cdbe6946459ae245bb9899339 - type: core - size: 4377 - - path: core/health-check/checks/services/api-endpoints.js - hash: sha256:0520f6adff935160cbf4b930ac6a215286493f08f4d8c03057227f6fa5aac0d3 - type: core - size: 4321 - - path: core/health-check/checks/services/claude-code.js - hash: sha256:2944ec0d22409624eabd3931e7f5ae6b35a10419b62687c91883a7ea897877d3 - type: core - size: 3606 - - path: core/health-check/checks/services/github-cli.js - hash: sha256:7440d938a46bb4f91e415f92273f3f2e0580fa9c7aa4455549e289d2493cd11b - type: core - size: 2889 - - path: core/health-check/checks/services/index.js - hash: sha256:5a55b992931ba79c6eb5fc135b1738f78b7f38b9688ff670a58da8b3359a387d - type: core - size: 598 - - path: core/health-check/checks/services/mcp-integration.js - hash: sha256:8480ab3e176bab7b3019c6e8b84255bbf3124ce970eabe61d6e89779f5cdf9ff - type: core - size: 3370 - - path: core/health-check/engine.js - hash: sha256:9c4372d7987e672efaf47c34fcb49b34f430ae4d66456f6b7e7c86ff9e436710 - type: core - size: 11017 - - path: core/health-check/healers/backup-manager.js - hash: sha256:6fb0e300fb976cce80120055225fcd82390b509c0e0151138649e95563586c8e - type: core - size: 8627 - - path: core/health-check/healers/index.js - hash: sha256:e57e45314b0dfa361fb25560fc402a66b97ff1acb261ca7cb1c0ebde0d4a67ce - type: core - size: 8899 - - path: core/health-check/index.js - hash: sha256:89db28d416a852b819ef008e050c738282e5ac163248093c5cce167fe97953de - type: core - size: 10271 - - path: core/health-check/reporters/console.js - hash: sha256:d6e3a033fd0b53edf89dff3d66dd2386352b400f5a53d05e6ecc5f29c07b01cb - type: core - size: 7932 - - path: core/health-check/reporters/index.js - hash: sha256:03881300f44f78de54d660a17540bc99a6194a63b06bd8db0f0665f27dfbfb60 - type: core - size: 3195 - - path: core/health-check/reporters/json.js - hash: sha256:96e4d78cccd14ddec87a5324e0c3fb82d580632302821ca558502c56c53b05b2 - type: core - size: 7064 - - path: core/health-check/reporters/markdown.js - hash: sha256:9644099b352a4761584eb586ce1ef405626e84d965dfb3485b61a6d8fabb0886 - type: core - size: 7759 - - path: core/ideation/ideation-engine.js - hash: sha256:06238e9040ba237a403dbaba0e97fd23a2e7a5d03b31c72c702c7e09bfd7ea19 - type: core - size: 22846 - - path: core/index.esm.js - hash: sha256:74ac4edc22f53a6e1ff7fe7d16add65b4e85e198dcdd0f54d3048ba032dc8f9a - type: core - size: 1494 - - path: core/index.js - hash: sha256:4ea4786645322ea95e53df4b8e11df7ed5460e708a7298a35e1144fa35912d1f - type: core - size: 2593 - - path: core/manifest/manifest-generator.js - hash: sha256:33922c543026eb97727374201cd41f01a72daa4f2e762cde6d91b35b0661e012 - type: core - size: 11335 - - path: core/manifest/manifest-validator.js - hash: sha256:1ecde36aadd88248494a6912ede47581d3fa109201fdc70c64c0570f9e0baa95 - type: core - size: 11294 - - path: core/mcp/config-migrator.js - hash: sha256:77d48cbfa9b5a450f14d81e6025921707abe13a7838cfdfe4c9c1cb64c79da62 - type: core - size: 9865 - - path: core/mcp/global-config-manager.js - hash: sha256:c25b00933ec4b3e7fe82cf9b1d91036f9b9c3a7045308841a87a2049c93127f9 - type: core - size: 8908 - - path: core/mcp/index.js - hash: sha256:4f9be6c05a2d6d305f6a3c0130e5e1eca18feb41de47245e51ebe1c9a32ffa7f - type: core - size: 716 - - path: core/mcp/os-detector.js - hash: sha256:1317824ddeb7bb896d81d6f4588865704cfb16caa97d532e266d45697a0a3ace - type: core - size: 3803 - - path: core/mcp/symlink-manager.js - hash: sha256:dde87d2188a5a3f6a11df797634b189debe9d366f03b99be7a975debde5033df - type: core - size: 10388 - - path: core/memory/context-snapshot.js - hash: sha256:e03673c2062b063c808f0cd951d72f0c08ed59e254328b137b67b8f0820bbde2 - type: core - size: 20026 - - path: core/memory/gotchas-memory.js - hash: sha256:2e9384c61584cb71b60be9319b387f2abd2b213f11e6257ae3d025c95f8c9ccb - type: core - size: 33055 - - path: core/migration/migration-config.yaml - hash: sha256:fdfc02364ba8ac5983dc8f902c63b911b799b2c9d7d8e0013460708939a69269 - type: core - size: 1585 - - path: core/migration/module-mapping.yaml - hash: sha256:b442377f667ca400350cf1f1260ff2477a30c9318ebdff78a7a90b89b8a20842 - type: core - size: 1820 - - path: core/orchestration/agent-invoker.js - hash: sha256:fa01b972eac63f81f5a1b2a74cee3ff666819e133a93812bfe698dcb62310ba1 - type: core - size: 16571 - - path: core/orchestration/checklist-runner.js - hash: sha256:769140bd2b2df87d562a022e089ab7ac301fa162832b4b5290f4f940c7ff8fb6 - type: core - size: 10093 - - path: core/orchestration/cli-commands.js - hash: sha256:f8f0e5ca9feba518fd71e3e9ada7c42be28de2d05af6700b6a1652cb483371ed - type: core - size: 19082 - - path: core/orchestration/condition-evaluator.js - hash: sha256:cf638e17e7efcde32e0e7616909c76ace7d0fdfc23c90799cb93908e7432752c - type: core - size: 10844 - - path: core/orchestration/context-manager.js - hash: sha256:91b4e84f1a6246f9a1c94191a096bf9ee26b668610cc3fe7aec893931f54d241 - type: core - size: 7299 - - path: core/orchestration/dashboard-integration.js - hash: sha256:18b6faec03dc06f376bfad615609a73ee6363cff0066eedb3b6cd373367bbf6d - type: core - size: 12613 - - path: core/orchestration/executors/epic-3-executor.js - hash: sha256:3d1eff0b806ea7841990ae9e0e8e08d62ead858710ea2674c4fef6ea337117e8 - type: core - size: 6146 - - path: core/orchestration/executors/epic-4-executor.js - hash: sha256:61aa6b13085906e811dfa944db2226ecea0eec5096719776b1672450c0eac464 - type: core - size: 6836 - - path: core/orchestration/executors/epic-5-executor.js - hash: sha256:8f39e1cc2848753953ea357d182a5b2e3ad83e7c6df979a69a0fbfec3966d053 - type: core - size: 8536 - - path: core/orchestration/executors/epic-6-executor.js - hash: sha256:72b40b9abf609cb52cbd3476d8ac3584f9ba34e8bcc65ea124f8574f5ddc6c1f - type: core - size: 6766 - - path: core/orchestration/executors/epic-7-executor.js - hash: sha256:404801616a9661e552e16e1e880a503c41e9aaff85811ffaec870d2cf760d724 - type: core - size: 9538 - - path: core/orchestration/executors/epic-executor.js - hash: sha256:493631c8bac8135bed8aed4b4189055458f30a4996849afa2030eb582833afb8 - type: core - size: 5859 - - path: core/orchestration/executors/index.js - hash: sha256:a57aef28c1f8c2dc0a1bfad8b6fa70ebcd505d43daebfab08ce9cb161b6dffe5 - type: core - size: 2034 - - path: core/orchestration/gate-evaluator.js - hash: sha256:a690705df1d5023105afa68b35db2bd84474f40da76c47a9f04d97b2cd7f5198 - type: core - size: 15803 - - path: core/orchestration/index.js - hash: sha256:b0cd2437434e492a46dd533d5b50b29348b99c75681805f6c9b8c9d1297d064d - type: core - size: 3496 - - path: core/orchestration/master-orchestrator.js - hash: sha256:2e36eabfbc192808325362265457cd1d4b4411fde467a74fcb3d4f34f8699875 - type: core - size: 54518 - - path: core/orchestration/parallel-executor.js - hash: sha256:17b9669337d080509cb270eb8564a0f5684b2abbad1056f81b6947bb0b2b594f - type: core - size: 5820 - - path: core/orchestration/recovery-handler.js - hash: sha256:8a8e0eb4d3db576938959edf39845ce896488feaf847eb41762ae012c1ebe08c - type: core - size: 24341 - - path: core/orchestration/skill-dispatcher.js - hash: sha256:0a2dcf12cb8b04c26006c57016cf0d651332e60dee09762f88927c216464abde - type: core - size: 10372 - - path: core/orchestration/subagent-prompt-builder.js - hash: sha256:425dd2f4374fa250a8507cdafcffd6fc7230d6300be313df47c8aa8caf4ec248 - type: core - size: 11253 - - path: core/orchestration/tech-stack-detector.js - hash: sha256:a49a958379ddad51464747e78e90b576a22b2c21bd385612ffa92357646324f9 - type: core - size: 16493 - - path: core/orchestration/workflow-orchestrator.js - hash: sha256:8f8bdc80c7306141d0ce3d0c792736436bd3dcff1eaba9352e39fdc4a4050af9 - type: core - size: 26893 - - path: core/quality-gates/base-layer.js - hash: sha256:e6489f595e04b1cb4e6c9b8abf990fcb9d5a6c4b52514e3b2afc7d5cbbb30e2d - type: core - size: 2981 - - path: core/quality-gates/checklist-generator.js - hash: sha256:7f2800f6e2465a846c9bef8a73403e7b91bf18d1d1425804d31244bd883ec55a - type: core - size: 9003 - - path: core/quality-gates/focus-area-recommender.js - hash: sha256:a679809428b4f4b779297deab9f7ce813a10e49d082dc6dabd5450ca80d00a64 - type: core - size: 10762 - - path: core/quality-gates/human-review-orchestrator.js - hash: sha256:92b8d5fe2dd485e49baf934de5c56f24aa24e5e7998e9c6b9fe48bea52c4a771 - type: core - size: 16210 - - path: core/quality-gates/layer1-precommit.js - hash: sha256:250b62740b473383e41b371bb59edddabd8a312f5f48a5a8e883e6196a48b8f3 - type: core - size: 9393 - - path: core/quality-gates/layer2-pr-automation.js - hash: sha256:f3c9a55dda80af1d977d45f8d2b1f61dc006a585928f9a2ad91f3ea6cd2455eb - type: core - size: 9163 - - path: core/quality-gates/layer3-human-review.js - hash: sha256:76808c723aad89a94147de58fa40bcf2901b31acfe20fb3c0a13bad34ad8076b - type: core - size: 9501 - - path: core/quality-gates/notification-manager.js - hash: sha256:8f0f92e8c1d38f707eca339708bc6f34dd443f84cdddb5d9cc4882e8a3669be6 - type: core - size: 16371 - - path: core/quality-gates/quality-gate-config.yaml - hash: sha256:b70a95db37494094c2fd5f0f4b623dffb070fd5128d965b4bf710d91700072ed - type: core - size: 2027 - - path: core/quality-gates/quality-gate-manager.js - hash: sha256:6f251261ece693bdea0756335107df6ba9e0364589c85d47f8310065aad997d6 - type: core - size: 17705 - - path: core/README.md - hash: sha256:bf40b518f8997dc17f1362fa89e927a2bad79c8ea6c5d2c05ffea7793dc34e8b - type: core - size: 7405 - - path: core/registry/build-registry.js - hash: sha256:d8eb27db68512df67e731c4d15a9a7eb2e45c3ed0eb72a6244f40ff0c520c42a - type: core - size: 13176 - - path: core/registry/README.md - hash: sha256:eb49d94f9c24d6c7d2e2b6e3715c31663086c5243592c73e82dc868a0d126b0b - type: core - size: 4782 - - path: core/registry/registry-loader.js - hash: sha256:9e0ab550f6f98db2ac27a95bfb7b11028b889230354cff5864248e53061be095 - type: core - size: 7988 - - path: core/registry/registry-schema.json - hash: sha256:02bc6cce5b4d7491e0c7cbfb27d50658196d231a96b34d39f0414c583f45d44e - type: core - size: 5445 - - path: core/registry/service-registry.json - hash: sha256:00f18727622526faaef558b17840d62b149a112eeb82cb3e645849e1b72db981 - type: core - size: 167814 - - path: core/registry/validate-registry.js - hash: sha256:f49bcf208b62fabdac40d28093e08d564cf0f1a175a8ac2c05cf987208bb907d - type: core - size: 9178 - - path: core/session/context-detector.js - hash: sha256:e76b2a1ae649b2780bfe94259d1f35e9bdd4a3dbde3a4e6f5c610cb1cb553ecb - type: core - size: 7217 - - path: core/session/context-loader.js - hash: sha256:eaef1e3a11feb2d355c5dc8fc2813ae095e27911cdf1261e5d003b22be16d8f0 - type: core - size: 13729 - - path: core/utils/output-formatter.js - hash: sha256:9c386d8b0232f92887dc6f8d32671444a5857b6c848c84b561eedef27a178470 - type: core - size: 8991 - - path: core/utils/security-utils.js - hash: sha256:957d61623f7d12da51330ae449b22b79bbd1cfde3456997fb7b533e5bc4a843f - type: core - size: 8962 - - path: core/utils/yaml-validator.js - hash: sha256:601fab2a8b880591f3558a1084b367b0f8f911dc947f8d6683bcbc61b2077476 - type: core - size: 11065 - - path: data/agent-config-requirements.yaml - hash: sha256:d388dc48e23384eae4c0156209846c509f76afb1579f3100f0404ff17580fc3f - type: data - size: 9846 - - path: data/aios-kb.md - hash: sha256:21138a86582b713c2106973907bbf4a5ce4e3192dadd832122ac9c6294d0efb1 - type: data - size: 34868 - - path: data/learned-patterns.yaml - hash: sha256:24ac0b160615583a0ff783d3da8af80b7f94191575d6db2054ec8e10a3f945dc - type: data - size: 68 - - path: data/technical-preferences.md - hash: sha256:6d1111823aefaca138dfaa3661139ae57db0ec9841046617e5024a24e532f570 - type: data - size: 64 - - path: data/workflow-patterns.yaml - hash: sha256:e43d4622473a9a7ffa119c17f154d37ae5b1c4a07335826514d6694e200f2d11 - type: data - size: 19713 - - path: development/agent-teams/team-all.yaml - hash: sha256:368efa25930f89d33ee4178c7b77871ad2ca1437ca56376233b0c375a2cb311c - type: development - size: 317 - - path: development/agent-teams/team-fullstack.yaml - hash: sha256:0be99a3df841232203de1b382d416ddd7ce06d73b6a25572bd7d4e4b667b71ec - type: development - size: 384 - - path: development/agent-teams/team-ide-minimal.yaml - hash: sha256:600b6795116fd74e66f3544679667fa4b6a546c88eaf5e30b6182b77ba341692 - type: development - size: 167 - - path: development/agent-teams/team-no-ui.yaml - hash: sha256:0e116f4e40d483ef8ecfdc268998e6ee52f91bffe481ac9f1fdc424dc306d82d - type: development - size: 224 - - path: development/agent-teams/team-qa-focused.yaml - hash: sha256:1a1ba8e2816d801cbcce2013a9062d16713a09f70582ea399ed10751bc5b1557 - type: development - size: 5012 - - path: development/agents/aios-master.md - hash: sha256:d0eac5dd9e97b031081c926d1011aeba81bc5fc822e20b2b9a294b61f3838c3b - type: agent - size: 14423 - - path: development/agents/analyst.md - hash: sha256:6ff4ea10b7ab0c5ec17691bc9932849667a9e41be4a0361b229b5435831b1352 - type: agent - size: 9392 - - path: development/agents/architect.md - hash: sha256:be37c130313deb7eb1b1ca285d310a608eef17609e9766481421dfc0669da16c - type: agent - size: 17593 - - path: development/agents/data-engineer.md - hash: sha256:b22d68247fbb00edc5ee69b190ce6633481f9d60ea78353d65136463ef4f0a11 - type: agent - size: 20358 - - path: development/agents/dev.md - hash: sha256:32d0b280f679731dfff116dbe42b5a4b84b046c5cbdf0f951739ed835505bf9c - type: agent - size: 23240 - - path: development/agents/devops.md - hash: sha256:880e7fdbcc27e396a94ca6d75daeaedde960366e2e6aea785bd6ead65332c20f - type: agent - size: 17710 - - path: development/agents/pm.md - hash: sha256:d6a8ecb0c2cc7d67aa19bcf1d760650a5ccf25d722772e4d10624a2acad26b84 - type: agent - size: 9122 - - path: development/agents/po.md - hash: sha256:ef4a445554a1d84fd104df11edda6012a626ae5f5e454cf97e5fe10c5476ed8e - type: agent - size: 10962 - - path: development/agents/qa.md - hash: sha256:9e5ab1e7577626c7f842a256c642c94ac1c063e116ed0dcbe869051ece656b95 - type: agent - size: 16103 - - path: development/agents/sm.md - hash: sha256:a3199fb2710f315e32eb6f475e5dc56a132328dde65aa8b4730676dc98e7ce4d - type: agent - size: 9758 - - path: development/agents/squad-creator.md - hash: sha256:127a95c58b68e1dd9f42d907b8b23b9762e32fe89acf05ea0e564fb5497e9a72 - type: agent - size: 11941 - - path: development/agents/ux-design-expert.md - hash: sha256:ab6b467744ba71e3fc02e7152b0966d89b3b1cdb2676b18752b7717289a851d5 - type: agent - size: 17912 - - path: development/checklists/self-critique-checklist.md - hash: sha256:869fbc8fbc333ac8eea4eca3ea4ab9ca79917fa5e53735b70d634c85ac6420c8 - type: checklist - size: 9184 - - path: development/README.md - hash: sha256:66c7cc2510c1100c13aa176502428e7b1396fcd88af748a966f9ad3e2d0773b3 - type: development - size: 4429 - - path: development/scripts/agent-assignment-resolver.js - hash: sha256:d2dc350df895acd4c1d252ed5caf3036e3ee5b3e2a6e5659596ed1f344b0b612 - type: script - size: 7533 - - path: development/scripts/agent-config-loader.js - hash: sha256:d2a7880a28a00d47c0cccc848ae56d5a4ab602890ff2758af0823b554c8ec159 - type: script - size: 18360 - - path: development/scripts/agent-exit-hooks.js - hash: sha256:fd2a7946ce401e39821e1c5298c56fb51d53a1d1f9f0bf0bf1567787b5b594dc - type: script - size: 3210 - - path: development/scripts/apply-inline-greeting-all-agents.js - hash: sha256:9cf5082fbcec95984127fdece65ce9b3e9b8e091510175535086714f290d9590 - type: script - size: 4600 - - path: development/scripts/audit-agent-config.js - hash: sha256:861428491ec5bb6741877381fd7e8506b2150f8c81a00d061ae499b2480c524d - type: script - size: 9814 - - path: development/scripts/backlog-manager.js - hash: sha256:4483c2160b00637f0288d0d48edd9bff96de080e9d001e0d40f292ea8c830a41 - type: script - size: 9974 - - path: development/scripts/batch-update-agents-session-context.js - hash: sha256:2f4c8b4f84b3cd86a5897909fcbb8d8c3ff4d48058fa9d04cbc924ab50f3fd32 - type: script - size: 2924 - - path: development/scripts/decision-context.js - hash: sha256:ad19e9891fa3085ea1774a9d29efaaf871f13b361cd0691e844e3fd6a9c34ff3 - type: script - size: 6956 - - path: development/scripts/decision-log-generator.js - hash: sha256:079c10474b6db9a262eb95ed6f3a9a57889b054ecbe71b0f6fa208eb11589636 - type: script - size: 7726 - - path: development/scripts/decision-log-indexer.js - hash: sha256:edb8114182c73fbbcaddbd7c12a0a04698942edc3a26a1a961bd7874b2d279a5 - type: script - size: 8585 - - path: development/scripts/decision-recorder.js - hash: sha256:eceb170ad39ed19a71b1874101105b4e6d7fea5b8c1d80444c2674955c3e5a59 - type: script - size: 5134 - - path: development/scripts/dev-context-loader.js - hash: sha256:86073a76dcc11b02cda3fefbb585006d14587cede56f70aa7a58a1ee7efca508 - type: script - size: 8226 - - path: development/scripts/generate-greeting.js - hash: sha256:64647adb9b272a3f7f156a4b77edb97a2279799c5ed44413451ede7002528aa4 - type: script - size: 5032 - - path: development/scripts/greeting-builder.js - hash: sha256:ebc0d7d8ebddefa763a9c924c2f344493cb212768f9a7533b835efb5ad3b7378 - type: script - size: 28756 - - path: development/scripts/greeting-config-cli.js - hash: sha256:1535acc8d5c802eb3dec7b7348f876a34974fbe4cfa760a9108d5554a72c4cf6 - type: script - size: 3294 - - path: development/scripts/greeting-preference-manager.js - hash: sha256:312b46c2ae71b3282c5ee5e11ec2f0c5deff77d05a22feda5d8e294fdfa12a6a - type: script - size: 4039 - - path: development/scripts/migrate-task-to-v2.js - hash: sha256:e46eee82185e3c631af2ea49b5533354559bc2ed8cfd3b0848670455aba81a95 - type: script - size: 9449 - - path: development/scripts/squad/index.js - hash: sha256:e76b9c8be107210f33e7689bb8098e47e6970ce6816e6e9e4d0d5a948f7627f3 - type: script - size: 2649 - - path: development/scripts/squad/README.md - hash: sha256:55e0226c3baffe16fd24f3d19179326c43e8dc525697c0b5c972cf15825f7c14 - type: script - size: 3244 - - path: development/scripts/squad/squad-analyzer.js - hash: sha256:2e85175d10ed0d07911beecc2923959a1fac8af86d6652003d83485f5b41c0ee - type: script - size: 18156 - - path: development/scripts/squad/squad-designer.js - hash: sha256:101cbb7d6ded0d6f991b29ac63dfee2c7bb86cbc8c4fefef728b7d12c3352829 - type: script - size: 29548 - - path: development/scripts/squad/squad-downloader.js - hash: sha256:a62dd5d40ef24426ffdabdcbe0a0a3a7e7e2b1757eba9749a41d3fd4c0e690f8 - type: script - size: 15335 - - path: development/scripts/squad/squad-extender.js - hash: sha256:ceab4df7d9708449aff28eb2b5cbf57f11b2c93196280c814bf02787e7db22f3 - type: script - size: 20638 - - path: development/scripts/squad/squad-generator.js - hash: sha256:fa83979eeeac361713e8f99bfec6ac9f9dc9d8d4107ecf809cd3b7370a4de79c - type: script - size: 44048 - - path: development/scripts/squad/squad-loader.js - hash: sha256:7093b9457c93da6845722bf7eac660164963d5007c459afae2149340a7979f1f - type: script - size: 10549 - - path: development/scripts/squad/squad-migrator.js - hash: sha256:e6c5c596b8a5266a2e853d3e3068b63c67c122f9a7cf29387df6b051035c9f33 - type: script - size: 19469 - - path: development/scripts/squad/squad-publisher.js - hash: sha256:329c00fb9d1085675a319e8314a5be9e1ee92c617691c47041f58d994982e029 - type: script - size: 18724 - - path: development/scripts/squad/squad-validator.js - hash: sha256:90f7b1d6f9b072718a7029afe5c238b66c6b880ee18d6c416244dca5d9a6bfa1 - type: script - size: 23034 - - path: development/scripts/story-index-generator.js - hash: sha256:5c9bf1339857e25b20875193c6dd42ac6c829491c0f46ba26bf07652aff6ed8b - type: script - size: 9506 - - path: development/scripts/story-manager.js - hash: sha256:c6c3e705f5581e088e859681bf902d0316442a69dc809afb84671fde51770538 - type: script - size: 11827 - - path: development/scripts/story-update-hook.js - hash: sha256:2f45aae8fa00c09359228b6d4ae06fa4bf7dbc9cf41a5735125a861281db363b - type: script - size: 6888 - - path: development/scripts/task-identifier-resolver.js - hash: sha256:ef63e5302a7393d4409e50fc437fdf33bd85f40b1907862ccfd507188f072d22 - type: script - size: 3985 - - path: development/scripts/test-greeting-system.js - hash: sha256:7785dce7b190435f85f443e6a35594abe156c64a49e91d7f2820d04240fa0dbc - type: script - size: 5530 - - path: development/scripts/validate-task-v2.js - hash: sha256:5beacac341075d9ad7c393f1464b881c8c1d296da7fe1e97a4d4c97ff0208175 - type: script - size: 9928 - - path: development/scripts/workflow-navigator.js - hash: sha256:c928557aa5cd3ad6e282c8e2bcb15186dc4fbda4ea85359f7e91f110551bb01e - type: script - size: 6348 - - path: development/tasks/add-mcp.md - hash: sha256:8a19ae5f343b68d7aace6a8400a18349fb7b4ebc92cecdab33e2a7f4f0d88512 - type: task - size: 10205 - - path: development/tasks/advanced-elicitation.md - hash: sha256:fbd55c3cbafb1336eafb8968c0f34035c2f352b22c45c150c7a327c7697438f9 - type: task - size: 8741 - - path: development/tasks/analyst-facilitate-brainstorming.md - hash: sha256:bcbbd3aaf18a82bfedb64e6a31c68fd946d2b83b4e72549d509a78827c0fc5d7 - type: task - size: 9170 - - path: development/tasks/analyze-brownfield.md - hash: sha256:56da9046b12a44e5fb6b6c0f98ea64f64bf9ab5449ffc35efe4fa2f0a4b6af1f - type: task - size: 13820 - - path: development/tasks/analyze-framework.md - hash: sha256:a66192aa6ea92958926a3efde5e667bfaec34bb18b270f7705f8e437d433766d - type: task - size: 21861 - - path: development/tasks/analyze-performance.md - hash: sha256:f6a7ac43c7834795e334062b70063ec4e6b4577090e0f3762dad0b4e3155c37f - type: task - size: 15464 - - path: development/tasks/analyze-project-structure.md - hash: sha256:3336ea3c394e4746d65f999f3901c470bf21d17e0ae8faabd8b332482c04127b - type: task - size: 14542 - - path: development/tasks/apply-qa-fixes.md - hash: sha256:9a7a3d6ab17732f22bae79257a8519d4e9175dd0f862b863185e03620d2753ce - type: task - size: 8898 - - path: development/tasks/architect-analyze-impact.md - hash: sha256:9cbb2af29a5c4621ae964fa53d8163e50bf3961b172c187fb861126a4cea7a0a - type: task - size: 26416 - - path: development/tasks/audit-codebase.md - hash: sha256:60b8b87ecda1290e1079a6458f43e607916e1d80c0a77faf72000feb07517dc8 - type: task - size: 10811 - - path: development/tasks/audit-tailwind-config.md - hash: sha256:6240b76e9caefda10c0e5cbe32dcab949ea700890c994889e37ca6aa29f5f39a - type: task - size: 7682 - - path: development/tasks/audit-utilities.md - hash: sha256:a4cd7737d8dea798319a4b15f748397aa86dda2d9009aae14382b275c112020e - type: task - size: 8411 - - path: development/tasks/bootstrap-shadcn-library.md - hash: sha256:dd80e4b94998a7743af0c1f4640d6d71009898f5a640012d90b7313d402567fe - type: task - size: 7609 - - path: development/tasks/brownfield-create-epic.md - hash: sha256:c056b98fa76b2a7e96e59146a9568065fcbf04e2efa9cd3689693d183ba2291d - type: task - size: 14348 - - path: development/tasks/brownfield-create-story.md - hash: sha256:af393075ac90c4ab6792095cd542e3b64ece0a6c5f0659dda87164802b3b939b - type: task - size: 8997 - - path: development/tasks/build-autonomous.md - hash: sha256:8e39b1c89f7f24f180101d82b37628019a07e84b16e5683b10ab196c35bf7028 - type: task - size: 5617 - - path: development/tasks/build-component.md - hash: sha256:992a116fae239712e6b371a61deb299ab592b58a5d64909664e2f5e22b7caeff - type: task - size: 14014 - - path: development/tasks/build-resume.md - hash: sha256:920b1faa39d021fd7c0013b5d2ac4f66ac6de844723821b65dfaceba41d37885 - type: task - size: 2711 - - path: development/tasks/build-status.md - hash: sha256:47a5f95ab59ff99532adf442700f4b949e32bd5bd2131998d8f271327108e4e1 - type: task - size: 3990 - - path: development/tasks/build.md - hash: sha256:154da4e8d6e0ec4e258a2a6b39606e10fbc577f74f58c36c09cf88378c0ec593 - type: task - size: 4390 - - path: development/tasks/calculate-roi.md - hash: sha256:de311b13bc46ec827eed8d6d6b82754a55006b6c4f46ecdd3d8f05b212bf12b5 - type: task - size: 11528 - - path: development/tasks/capture-session-insights.md - hash: sha256:eeb7aa04299486503f7a0e7245161ace21c4dd07ddb45edbb640c20633aa5741 - type: task - size: 15754 - - path: development/tasks/check-docs-links.md - hash: sha256:9a7e1400d894777caa607486ff78b77ea454e4ace1c16d54308533ecc7f2c015 - type: task - size: 3082 - - path: development/tasks/ci-cd-configuration.md - hash: sha256:96bd560b592333563b96a30a447bf9233176b47f42a7f146a47b4734f82d023a - type: task - size: 20850 - - path: development/tasks/cleanup-utilities.md - hash: sha256:9f954e38f492408a59009701083866c2c9ad36ae54da33991627a50e1281b0b8 - type: task - size: 17769 - - path: development/tasks/collaborative-edit.md - hash: sha256:cd4e1d63aaef58bc622fb86276344f01c2919eb807c7fc2c6106fe92087bf702 - type: task - size: 32261 - - path: development/tasks/compose-molecule.md - hash: sha256:50e8c0686bf7b0919efe86818f2ce7593b8b962ec7d8db897c6d832f8751ede2 - type: task - size: 6811 - - path: development/tasks/consolidate-patterns.md - hash: sha256:4af85613841d294b96dabcb9042b051e81821bf5f67bafabfc922934c5a87f0a - type: task - size: 11311 - - path: development/tasks/correct-course.md - hash: sha256:0565f8febb91d4c5b9f8c8d836d16a29ef9bf8cfbedf517ec07278ac06417652 - type: task - size: 11646 - - path: development/tasks/create-agent.md - hash: sha256:33dd541b75c5a87d54c981e03a6ff8be06dcc4161263962bd00290728d6add84 - type: task - size: 8355 - - path: development/tasks/create-brownfield-story.md - hash: sha256:18d9b53040134007a5b5ebd5dab3607c54eb1720640fa750ad05e532fd964115 - type: task - size: 22378 - - path: development/tasks/create-deep-research-prompt.md - hash: sha256:a371a4a62c5d7d16e6d11f4a96c6de8ed243343d5854307a0bf3b743abf31a8c - type: task - size: 12254 - - path: development/tasks/create-doc.md - hash: sha256:8788f29a37727921a651cd889da4ade9f6ce8a33a274e9d213fde232945d506c - type: task - size: 8681 - - path: development/tasks/create-next-story.md - hash: sha256:f650cbb2056c31cf4b85fb83b4e030ccf613cd5270d1453b80bbc00dc6344a60 - type: task - size: 29544 - - path: development/tasks/create-service.md - hash: sha256:6ce3eeeab6ed8ff6c5804b4fc4c3006c298009ab60c35b51afedac57082eeb34 - type: task - size: 8947 - - path: development/tasks/create-suite.md - hash: sha256:8e57cba8aaed7f86a327e11185aca208af241ab41abc95188a2243375085ca15 - type: task - size: 7175 - - path: development/tasks/create-task.md - hash: sha256:e3bfc2e7c0db82379434462b7f3ab2de154045c28d4b94151171bb4653ce6ed8 - type: task - size: 9223 - - path: development/tasks/create-workflow.md - hash: sha256:e09891060fc57d51038f69ee81dcd91f05e14c0a4eea60a07fed73dc7ad67b83 - type: task - size: 9070 - - path: development/tasks/create-worktree.md - hash: sha256:2a181b87bdc2cb3f2de29d7ab33dbe7d2261bd4931a900e4c91ae00f581b0b52 - type: task - size: 9182 - - path: development/tasks/db-analyze-hotpaths.md - hash: sha256:cf686ae98b90cf601593497c3f001b516b43283df937006b2d6c7c493742bd8e - type: task - size: 12911 - - path: development/tasks/db-apply-migration.md - hash: sha256:1c5844ce98b58313727d746c1b413ce5b8241c355900cfb3cb94948d97e9286b - type: task - size: 8205 - - path: development/tasks/db-bootstrap.md - hash: sha256:feec0c8afc11658a453428464aed1716be3a35b7de6c41896a411fb8e6d86a97 - type: task - size: 13206 - - path: development/tasks/db-domain-modeling.md - hash: sha256:5da9fe7c0f9fbfdc08e8d21a4cc80cb80189ae93ebd6df2ef3055ed2e7bfbfd9 - type: task - size: 15547 - - path: development/tasks/db-dry-run.md - hash: sha256:6e73f9bc78e921a515282600ac7cbca9b290b4603c0864101e391ec746d80533 - type: task - size: 6108 - - path: development/tasks/db-env-check.md - hash: sha256:87847ae950523df49e1ec4f86e689be538dfebb4cecc9ce8461e68dce509fb25 - type: task - size: 5710 - - path: development/tasks/db-expansion-pack-integration.md - hash: sha256:0a18f3a72210707fa66f8fddd6de737172da647931b9327a58deda02ff1cf748 - type: task - size: 16819 - - path: development/tasks/db-explain.md - hash: sha256:91178c01e12b6129bda0851a90560afa81393cc88e769802a88c8a03a90e0ee4 - type: task - size: 12438 - - path: development/tasks/db-impersonate.md - hash: sha256:66fc4bbd59c767c3214a2daf570ae545a7dbb71aa0943cb7e7c3fa37caa56fda - type: task - size: 10185 - - path: development/tasks/db-load-csv.md - hash: sha256:11fa99d82e670b83e77edd83aa948e7ad74d66121ba5ecb2ef87c27d7f89ca76 - type: task - size: 12207 - - path: development/tasks/db-policy-apply.md - hash: sha256:4ccb5cb15193e39e352df3c76ea1f6d10734c10c85138a3031d51255a26e7578 - type: task - size: 15035 - - path: development/tasks/db-rls-audit.md - hash: sha256:12a342044522b1e65748d45fa50d740c53a14144ffc89bddf497768472055517 - type: task - size: 8897 - - path: development/tasks/db-rollback.md - hash: sha256:e12b23831225e9bb14d627a231f71a0aef6d21551a6f41b81022d702ad2d71f3 - type: task - size: 16413 - - path: development/tasks/db-run-sql.md - hash: sha256:e30338b5dcd371b5817c01c8a18d8f80e2ae266b85e5fc7a8d03dc4623e8b0b9 - type: task - size: 12128 - - path: development/tasks/db-schema-audit.md - hash: sha256:e30c4e9fc974c0fb84c96fe3411e93ad65c9cf5ca2d9b3a5b093f59a4569405a - type: task - size: 25128 - - path: development/tasks/db-seed.md - hash: sha256:f63b03eecce45fb77ec3e2de49add27fd9e86dda547b40486824dd394ca2a787 - type: task - size: 8193 - - path: development/tasks/db-smoke-test.md - hash: sha256:289098278f5954184305796985bfb04ae9398426ac258450013b42f5ff65af81 - type: task - size: 7624 - - path: development/tasks/db-snapshot.md - hash: sha256:fdc691f542306d96f6793463df5c5e6787d3f12ca3e7659b96e4848100ad0150 - type: task - size: 11713 - - path: development/tasks/db-supabase-setup.md - hash: sha256:1b67b6b90d964026d6aea4fcea8488db6d1445319d73f43a3d041547f8217db4 - type: task - size: 15990 - - path: development/tasks/db-verify-order.md - hash: sha256:6e37dbb7ee89bfd4fd0b5a654eb18e13822fdf50971dcfea748fa1d33cc4f580 - type: task - size: 11488 - - path: development/tasks/deprecate-component.md - hash: sha256:07c59cc5790273949e0568ec86c6dd1565a3ab3b31bd9dec4a29fb4f3fbb0381 - type: task - size: 29475 - - path: development/tasks/dev-apply-qa-fixes.md - hash: sha256:8146ef4e915a7dd25b4b24fa5d7fd97bb4540a56529f209f7e793771ee2acc8e - type: task - size: 8099 - - path: development/tasks/dev-backlog-debt.md - hash: sha256:c120a9035de27543fd8a59acc86336190e8b91972987d32c5eec67d57089795a - type: task - size: 11021 - - path: development/tasks/dev-develop-story.md - hash: sha256:eed82b8196cfc7e499f17b0942c98e11f8a54ead10175e91577853fac32e9851 - type: task - size: 24804 - - path: development/tasks/dev-improve-code-quality.md - hash: sha256:8f8e6b0dcb1328cf7efcde263be95b93b2592176beafc7adfd3cdffbfa763be4 - type: task - size: 24720 - - path: development/tasks/dev-optimize-performance.md - hash: sha256:9ceebe055bc464b9f9d128051630f7d41fd89e564547677cc1d1859b5fae3347 - type: task - size: 29272 - - path: development/tasks/dev-suggest-refactoring.md - hash: sha256:fb75f56fa178b72c9716a4a00f9a0df6a6d6348f362ef3e095cff45c16bd8f43 - type: task - size: 24191 - - path: development/tasks/dev-validate-next-story.md - hash: sha256:68af17e15d933588c5f82fac0133ad037a2941364f328f309bde09576f428b0a - type: task - size: 11364 - - path: development/tasks/document-gotchas.md - hash: sha256:23620283f08576d01d0dd3a8dcd119d6269a53e040d6eb659eef7febf330e36f - type: task - size: 10385 - - path: development/tasks/document-project.md - hash: sha256:ae76484ad3386bcb77d0fd6e627b7ffb2a91b68f09573cbfe20d4585d861f258 - type: task - size: 18041 - - path: development/tasks/environment-bootstrap.md - hash: sha256:021d54f1c0194e33d00d5c152f460be0b5b5d7e7ecfec382a50611518470cf56 - type: task - size: 43824 - - path: development/tasks/execute-checklist.md - hash: sha256:dcb6309bf68aa1f88d3271382c102662ef8b2cfb818f4020f85b276010108437 - type: task - size: 8577 - - path: development/tasks/export-design-tokens-dtcg.md - hash: sha256:19a799915c14f843584afc137cbb6f880d36e4ad9ef7ad7bd1e066b070c61462 - type: task - size: 7231 - - path: development/tasks/extend-pattern.md - hash: sha256:26ffbf7cd1da2e9c02202b189297627cd9e353edd2b041e1f3100cf257325c04 - type: task - size: 6127 - - path: development/tasks/extract-patterns.md - hash: sha256:a5ac155636da04219b34733ed47d7e8ba242c20ad249a26da77985cdee241bea - type: task - size: 8879 - - path: development/tasks/extract-tokens.md - hash: sha256:11822dddaaea027f1ac6db9f572c312d3200ffc60a62c6784fff1e0f569df6a4 - type: task - size: 13106 - - path: development/tasks/facilitate-brainstorming-session.md - hash: sha256:a41594c9de95dd2d68b47472d512f9804d45ce5ea22d4078361f736ae0fea834 - type: task - size: 13901 - - path: development/tasks/generate-ai-frontend-prompt.md - hash: sha256:0345d330c6b4b934ff576bd5ac79440f186f0622d1637d706806e99c8ede77fb - type: task - size: 9355 - - path: development/tasks/generate-documentation.md - hash: sha256:e09c34125a8540a48abe7f425df4a9873034fb0cef4ae7e2ead36216fd78655e - type: task - size: 6788 - - path: development/tasks/generate-migration-strategy.md - hash: sha256:d24f3138f4ec6072745bd76b88b1b8b7180d3feb7860158a3e6a42390d2b1569 - type: task - size: 14103 - - path: development/tasks/generate-shock-report.md - hash: sha256:ee54ce0bc4c81b131ca66c33f317a2277da66b7156794bc2a41eb4e77c5bf867 - type: task - size: 13659 - - path: development/tasks/github-devops-github-pr-automation.md - hash: sha256:907476b248dc063e8bbd48bb884fa667dca93f6469394500e4ad567aa33953ba - type: task - size: 17713 - - path: development/tasks/github-devops-pre-push-quality-gate.md - hash: sha256:36b9d3018ae34bc5f0e5ab2ec1bdcc963cf31393d7afc625cc61d706d75154a8 - type: task - size: 20260 - - path: development/tasks/github-devops-repository-cleanup.md - hash: sha256:41bab1eb9841602af7c806ddc7c03d6d36e8a2390e290d87818037076fe5fb05 - type: task - size: 8757 - - path: development/tasks/github-devops-version-management.md - hash: sha256:823916f01d2242591cd5a4b607e96f130ceaf040015f510b24847752861bcc0c - type: task - size: 11737 - - path: development/tasks/gotcha.md - hash: sha256:c6f621ada5233e0f4181b8e052181017a040246eec604749c970786b7cf9f837 - type: task - size: 3428 - - path: development/tasks/gotchas.md - hash: sha256:cc08b7095e5d8bae22022136fed1520e0b1b00cac3532201a5a130724c0e2ae3 - type: task - size: 3595 - - path: development/tasks/health-check.yaml - hash: sha256:9480d2a74f5d3d3cc709bbe18c957cf9267d544365a5c1adf0d1664efa13f1c9 - type: task - size: 5527 - - path: development/tasks/improve-self.md - hash: sha256:3a17a20467a966fcd4b2f8afb6edf202caf2e23cb805fcc6a12290c87f54d65d - type: task - size: 19603 - - path: development/tasks/index-docs.md - hash: sha256:73e45d712845db0972e91fa6663efbb06adefffefe66764c984b2ca26bfbbc40 - type: task - size: 9942 - - path: development/tasks/init-project-status.md - hash: sha256:31f85d85d8679a4dae27b26860985bc775d744092f2c4d4203acfbcd0cd63516 - type: task - size: 10990 - - path: development/tasks/integrate-expansion-pack.md - hash: sha256:7b12e0bcbdb4ab02aed3e8c22ad231a2cddac209cc5a855af707afc3db10c35e - type: task - size: 6847 - - path: development/tasks/kb-mode-interaction.md - hash: sha256:97706a85b87ab4b506bad2fb29eadd425e2b95418bb9ada1288d2c478d6704a6 - type: task - size: 7178 - - path: development/tasks/learn-patterns.md - hash: sha256:6e6ac0585d2178a2d5a8c53495c323cb764018b3fc8b7b4c96244dec2fbf5339 - type: task - size: 26879 - - path: development/tasks/list-worktrees.md - hash: sha256:7be3ab840fa3b0d0fd62ff15f8dba09ba16977558829fbf428a29bf88504f872 - type: task - size: 6519 - - path: development/tasks/mcp-workflow.md - hash: sha256:605d43ed509a0084b423b88681f091618931fe802fc60261b979f0ae1da5fe91 - type: task - size: 8854 - - path: development/tasks/modify-agent.md - hash: sha256:3b37db1399c223dbc0d426c4363aa3f96fbf1d481d541d51bcc1d067da099992 - type: task - size: 9229 - - path: development/tasks/modify-task.md - hash: sha256:c1bdaaaee23bde11418d5bd0840da136b09e32a7dfb95926afd41c81fb8badb9 - type: task - size: 10260 - - path: development/tasks/modify-workflow.md - hash: sha256:091a4236aaf2ef93f6f394b99dc43cbedccbd9a864d55f4992a50dd4684bc97f - type: task - size: 11422 - - path: development/tasks/next.md - hash: sha256:53f4311ff6797342701c870b9552884815537dde8cb4936a0b3b5bf53b820f32 - type: task - size: 6550 - - path: development/tasks/orchestrate-resume.md - hash: sha256:5da88a904fc9e77d7428344fb83e55f6f4a3cae4f9d21d77092d1c67664c3d86 - type: task - size: 1114 - - path: development/tasks/orchestrate-status.md - hash: sha256:08bab37f536024fb56d08590d3f98d4a4706bd335f91496d1afa80c06dddac4f - type: task - size: 1207 - - path: development/tasks/orchestrate-stop.md - hash: sha256:7b6003999cc13e88305c36f8ff2ea29ca7128a33ad7a88fbedc75662a101e503 - type: task - size: 910 - - path: development/tasks/orchestrate.md - hash: sha256:d3e25395f6d6bc7e6f7633b8999df16bdfe1662a4e2cb7be16e0479fcac7ed00 - type: task - size: 1284 - - path: development/tasks/patterns.md - hash: sha256:447ea50e9c7483d4dd9f88750aee95d459a20385c1c6baea41d93ac3090aa1f8 - type: task - size: 7372 - - path: development/tasks/plan-create-context.md - hash: sha256:be1938fa011eb550d9710872ac461d9317c85c26268ba181d304ad7d4856ed5d - type: task - size: 20202 - - path: development/tasks/plan-create-implementation.md - hash: sha256:6d794e93bf32fcfdc601530ab9a09d435d34535e5964d01cd2b7388e52049c38 - type: task - size: 18893 - - path: development/tasks/plan-execute-subtask.md - hash: sha256:fcce92949e2d35b03e9b056ce28894f83566abaf0158e4591c9165b97a6833f6 - type: task - size: 21363 - - path: development/tasks/po-backlog-add.md - hash: sha256:6d13427b0f323cd27a612ac1504807f66e9aad88ec2ff417ba09ecb0b5b6b850 - type: task - size: 8302 - - path: development/tasks/po-manage-story-backlog.md - hash: sha256:cf18517faca1fe371397de9d3ba6a77456a2b5acf21130d7e7c982d83330f489 - type: task - size: 14216 - - path: development/tasks/po-pull-story-from-clickup.md - hash: sha256:521c5840b52e36a833a5b7cf2759cec28309c95b5c3436cf5f2b9f25456367d6 - type: task - size: 13476 - - path: development/tasks/po-pull-story.md - hash: sha256:9348265ae252eeb484aa2f6db2137e8ffe00c180a7c6d96a10f7b8d207b18374 - type: task - size: 7219 - - path: development/tasks/po-stories-index.md - hash: sha256:747cf903adc6c6c0f5e29b2a99d8346abb473a0372f80069f34ba2639aeaca21 - type: task - size: 7602 - - path: development/tasks/po-sync-story-to-clickup.md - hash: sha256:0f605f1bed70ef5d534a33cca8c511b057a7c4631e5455d78e08d7a9cf57d18a - type: task - size: 10974 - - path: development/tasks/po-sync-story.md - hash: sha256:d03ebf6d4f06488893f3e302975e7b3f6aa92e1bbcf70c10d8363685da7c8d3b - type: task - size: 6896 - - path: development/tasks/pr-automation.md - hash: sha256:afa1856d285da4604c55a4ec2d45ba2fb0ed5166e5995fd81b0894fb60ed8fe4 - type: task - size: 19116 - - path: development/tasks/propose-modification.md - hash: sha256:56f48bdae2572ee632bd782ada47804018cc0ba660f7711df73e34ab667d1e40 - type: task - size: 23884 - - path: development/tasks/qa-backlog-add-followup.md - hash: sha256:227b99fc562ec3bb4791b748dbeae5b32ce42b6516371bbccdd022c7c5bca1b6 - type: task - size: 10175 - - path: development/tasks/qa-browser-console-check.md - hash: sha256:deddbb5aed026e5b8b4d100a84baea6f4f85b3a249e56033f6e35e7ac08e2f80 - type: task - size: 6827 - - path: development/tasks/qa-create-fix-request.md - hash: sha256:8ee4f0fbd4b00a6b12f1842a8261cf403d110e1b987530177d3a54739b13402e - type: task - size: 13281 - - path: development/tasks/qa-evidence-requirements.md - hash: sha256:cfa30b79bf1eac27511c94de213dbae761f3fb5544da07cc38563bcbd9187569 - type: task - size: 6649 - - path: development/tasks/qa-false-positive-detection.md - hash: sha256:f1a816365c588e7521617fc3aa7435e6f08d1ed06f4f51cce86f9529901d86ce - type: task - size: 9387 - - path: development/tasks/qa-fix-issues.md - hash: sha256:ae5bbf7b8626f40b7fbda8d8ed11d37faf97dbb1d9e9d1ed09a3716f1f443be0 - type: task - size: 15580 - - path: development/tasks/qa-gate.md - hash: sha256:5e28ae6a98fd0520f8f4ebc07a825ca31f9590804dc6bde45969e61579782ca8 - type: task - size: 8442 - - path: development/tasks/qa-generate-tests.md - hash: sha256:6155f078cc4f24e04b7b3379bf70dacd26e71fbf7f0e829dca52ce395ff48d3c - type: task - size: 37097 - - path: development/tasks/qa-library-validation.md - hash: sha256:9ba60c41af7efbc85a64e8b20b2e2d93e0fd8f0c4cc7484201763fe41a028bae - type: task - size: 11472 - - path: development/tasks/qa-migration-validation.md - hash: sha256:742b17d4655c08c90a79c3319212d4b3b6e55c4f69ab91b6e0e3db0329263dec - type: task - size: 13056 - - path: development/tasks/qa-nfr-assess.md - hash: sha256:cdade49e6c2bfabc3dca9d132119590a9a17480a198a97002f15668ee2915b2c - type: task - size: 12153 - - path: development/tasks/qa-review-build.md - hash: sha256:eb12cc73fc6b48634037cb5a86204e55c63ffeb63c28462faf53007da2fe595b - type: task - size: 30681 - - path: development/tasks/qa-review-proposal.md - hash: sha256:a6e0f9c048e55d53635c831ec510f6c3e33127da370b14cf302591fea4ec3947 - type: task - size: 35266 - - path: development/tasks/qa-review-story.md - hash: sha256:c6e1db10fa2ad01110206b538f10ef2fc3b26806e1d4eaa63931f4fb77ef4625 - type: task - size: 23292 - - path: development/tasks/qa-risk-profile.md - hash: sha256:95873134bd7eb1b0cec8982709051dd1c2f97c983b404478d990c88a2fadd5d5 - type: task - size: 13184 - - path: development/tasks/qa-run-tests.md - hash: sha256:999458369a52234633ade4b3701591c85a7918c2ae63ceb62fd955ae422fad46 - type: task - size: 5834 - - path: development/tasks/qa-security-checklist.md - hash: sha256:9f29e82e9060b80a850c17b0ceb0c9d9c8c918d4431b4b434979899dd5c7c485 - type: task - size: 12453 - - path: development/tasks/qa-test-design.md - hash: sha256:f33511b1b4b43dfae7641aca3d49d4f97670b36ec5c80ce4e91aaad1af72fd86 - type: task - size: 9129 - - path: development/tasks/qa-trace-requirements.md - hash: sha256:304eb10f49a547ace8ba03571c9f50667639228b77e07d05b4120f97a880a230 - type: task - size: 11411 - - path: development/tasks/release-management.md - hash: sha256:485a3003626a8f1fb4a6c3a67b8fee627be0b94884e3b943fe4eaca7d0243b1d - type: task - size: 18732 - - path: development/tasks/remove-worktree.md - hash: sha256:969e7ee512c837ef3161ad786b0177ae14818671d7ee2fa989a24e060932a9ed - type: task - size: 8651 - - path: development/tasks/search-mcp.md - hash: sha256:4c7d9239c740b250baf9d82a5aa3baf1cd0bb8c671f0889c9a6fc6c0a668ac9c - type: task - size: 7799 - - path: development/tasks/security-audit.md - hash: sha256:8830289e7db7d333af2410eadad579ed69eb673485d085f87cce46ed7df2d9e6 - type: task - size: 13362 - - path: development/tasks/security-scan.md - hash: sha256:4b8ffb170b289232b17606d56b1670df04624d91d3c8b2b342c4eb16228e615b - type: task - size: 19073 - - path: development/tasks/setup-database.md - hash: sha256:d8464742d881feb36d7c738f0d7e3fde2242abc52a6dd858d16391252c504c65 - type: task - size: 15979 - - path: development/tasks/setup-design-system.md - hash: sha256:c7d01bf79300ea1f0f7ddb163261f326e75e0e84bdb43eb9a1d2bf1d262b9009 - type: task - size: 13042 - - path: development/tasks/setup-github.md - hash: sha256:27a86ce932b45a91a62ba4ced0855415ed9d98c2dedd7c00f0ea9d04c12f6125 - type: task - size: 31200 - - path: development/tasks/setup-llm-routing.md - hash: sha256:1cd70ae8b8bfb62cfb7db79cb214f4408bc4d9c2c604d330696969356ccf2607 - type: task - size: 4700 - - path: development/tasks/setup-mcp-docker.md - hash: sha256:2d81956e164d5e62f2e5be6b0c25d37b85fded3dc25a8393fb1cdc44d1dfbddc - type: task - size: 16304 - - path: development/tasks/setup-project-docs.md - hash: sha256:61ddcbba5e7836480f65ad23ea2e8eb3f5347deff1e68610a2084b2c4a38b918 - type: task - size: 12311 - - path: development/tasks/shard-doc.md - hash: sha256:5a416700a36ff61903d5bb6636efcb85e8dbc156fa366d10554ab1d6ddb14d95 - type: task - size: 14707 - - path: development/tasks/sm-create-next-story.md - hash: sha256:f2a2f314a11af481d48991112c871d65e1def7bb3c9a283b661b67a1f939ac9b - type: task - size: 18062 - - path: development/tasks/spec-assess-complexity.md - hash: sha256:860d6c4641282a426840ccea8bed766c8eddeb9806e4e0a806a330f70e5b6eca - type: task - size: 10448 - - path: development/tasks/spec-critique.md - hash: sha256:01c88a49688139c15c568ae5d211914908c67b5781b56d0af34f696cd0b65941 - type: task - size: 13309 - - path: development/tasks/spec-gather-requirements.md - hash: sha256:9120c12f5b38c3d54c14d56375e0c08880aaf0d3c86583b888866c5211841e42 - type: task - size: 7752 - - path: development/tasks/spec-research-dependencies.md - hash: sha256:705eb42ef39659e2a13ccbdf0978c9932402e15c701cea83113173f2281a0527 - type: task - size: 9624 - - path: development/tasks/spec-write-spec.md - hash: sha256:bf40b8490efb75f9a184bc771196a130576b189459c95ffa93af4a2ebc89ef4f - type: task - size: 10483 - - path: development/tasks/squad-creator-analyze.md - hash: sha256:5e1c24c1474e77a517b266c862a915d4b5c632340bb7ea426b5ac50ee53273e0 - type: task - size: 7040 - - path: development/tasks/squad-creator-create.md - hash: sha256:65f50ac890b671b9321ff18156de02d45b4b5075d3037fa847a5bfe304e7e662 - type: task - size: 8447 - - path: development/tasks/squad-creator-design.md - hash: sha256:47bcc27f3d3bfa81e567d009b50ac278db386fda48e5a60a3cce7643ef2362bc - type: task - size: 12698 - - path: development/tasks/squad-creator-download.md - hash: sha256:909088d7b585fbb8b465e0b0238ab49546c51876a6752a30f7bf7bf1bf22ef24 - type: task - size: 3856 - - path: development/tasks/squad-creator-extend.md - hash: sha256:ba5fbc0d4c1512f22790e80efc0660f2af2673a243d3c6d6568bbc76c54d1eef - type: task - size: 10219 - - path: development/tasks/squad-creator-list.md - hash: sha256:c0b52c5a8a79b3ed757789e633f42a5458bac18bbcf1aa544fc1f5295151b446 - type: task - size: 6555 - - path: development/tasks/squad-creator-migrate.md - hash: sha256:c0f669b2d490c698d7b448408019558ff02a46c5232c8e6ce58cd7b5131d4565 - type: task - size: 8712 - - path: development/tasks/squad-creator-publish.md - hash: sha256:f54cd24b45796ac9d3cee8876a1edca316f5560878201e828cad43d9e951ddc6 - type: task - size: 4918 - - path: development/tasks/squad-creator-sync-ide-command.md - hash: sha256:1fe5d5a713a0f1c582f6218a0418a78312f868e692bf67c01fd3e298b9b749bf - type: task - size: 12402 - - path: development/tasks/squad-creator-sync-synkra.md - hash: sha256:9e3cb982b6de771daf22788eb43d06bf7a197c32f15be4860946407b824ef150 - type: task - size: 8633 - - path: development/tasks/squad-creator-validate.md - hash: sha256:e4dc8af3ac29ca91998f1db3c70a8ae5a2380f4131dcd635a34eb7ffa24d3b0a - type: task - size: 5065 - - path: development/tasks/sync-documentation.md - hash: sha256:caa2077e7a5bbbba9269b04e878b7772a71422ed6fd138447fe5cfb7345f96fb - type: task - size: 23362 - - path: development/tasks/tailwind-upgrade.md - hash: sha256:c369df0a28d8be7f0092405ecaed669a40075841427337990e2346b8c1d43c3a - type: task - size: 8154 - - path: development/tasks/test-as-user.md - hash: sha256:3a9bbfe86a9dc1110066b7f4df7dd96c358dcf728d71d2a44101b11317749293 - type: task - size: 14045 - - path: development/tasks/test-validation-task.md - hash: sha256:d4ccfa417bd80734ee0b7dbbccbdc8e00fd8af5a62705aa1e1d031b2311f2883 - type: task - size: 3341 - - path: development/tasks/undo-last.md - hash: sha256:e99b5aed1331dbedcd3ef771fa8cf43b59725eee7c222a21f32183baedc7a432 - type: task - size: 7649 - - path: development/tasks/update-manifest.md - hash: sha256:0f3fbe1a4bad652851e5b59332b4d4a39daadc0af2764913fce534a3e2d5968e - type: task - size: 9745 - - path: development/tasks/ux-create-wireframe.md - hash: sha256:b903ded5ffbd62b994ab55e14e72e2a967ac471934f829a24c9e12230708889f - type: task - size: 15444 - - path: development/tasks/ux-ds-scan-artifact.md - hash: sha256:f79b316d0d47188b53432078454ea2e16da5e9f4548a37f63b13b91d5df7afa4 - type: task - size: 16184 - - path: development/tasks/ux-user-research.md - hash: sha256:80a49d68d69005f0b47f0e6a68567d4d87880cd1fdf66f4f9293c7c058709e00 - type: task - size: 13275 - - path: development/tasks/validate-next-story.md - hash: sha256:7ff03b62614edeb2a9c2bab9681a56ce97cffc59af3bd51054b9dafb1c99701f - type: task - size: 14320 - - path: development/tasks/verify-subtask.md - hash: sha256:112b01c15e2e4c39b0fe48cc8e71f55af71a95ad20d1c7444d5589d17b372df3 - type: task - size: 4925 - - path: development/tasks/waves.md - hash: sha256:364b955b3315f1621a27ea26ff1459467a19c87781ac714e387fb616aeb336e6 - type: task - size: 4686 - - path: development/templates/service-template/__tests__/index.test.ts.hbs - hash: sha256:04090b95bc0b606448c161d8e698fcf4d5c7da2517a5ac65663554a54c5acf91 - type: template - size: 9810 - - path: development/templates/service-template/client.ts.hbs - hash: sha256:3adbfb5a17d7f734a498bd2520fd44a1eadf05aad9f31b980f886ad6386394a6 - type: template - size: 12213 - - path: development/templates/service-template/errors.ts.hbs - hash: sha256:cc7139c0a2654dbd938ba79730fc97b6d30a79b8d1556fe43c61e0fca6553351 - type: template - size: 5395 - - path: development/templates/service-template/index.ts.hbs - hash: sha256:29d66364af401592a3ea0d5c4c4ebfb09e67373e62f21caac82b47b1bf78b3b8 - type: template - size: 3206 - - path: development/templates/service-template/jest.config.js - hash: sha256:1681bfd7fbc0d330d3487d3427515847c4d57ef300833f573af59e0ad69ed159 - type: template - size: 1750 - - path: development/templates/service-template/package.json.hbs - hash: sha256:7a25b377c72a98e44758afbe5a5b6d95971e47cca8e248b664ec63d7d1b7a590 - type: template - size: 2314 - - path: development/templates/service-template/README.md.hbs - hash: sha256:be6e4531587c37cc2ce1542dbd0c5487752d57f58c84e5dd23978d4173746c2e - type: template - size: 3584 - - path: development/templates/service-template/tsconfig.json - hash: sha256:8b465fcbdd45c4d6821ba99aea62f2bd7998b1bca8de80486a1525e77d43c9a1 - type: template - size: 1135 - - path: development/templates/service-template/types.ts.hbs - hash: sha256:2338ab2e1ade619bf33a2c8f22b149402b513c05a6d1d8a805c5273c7233d151 - type: template - size: 2661 - - path: development/templates/squad/agent-template.md - hash: sha256:b8ba4621f0bf03bf3612a683cebaa52e246cba19fb81197493ec4d682a1db14b - type: template - size: 1432 - - path: development/templates/squad/checklist-template.md - hash: sha256:5c962f20d7d56ef8800f60dc32f8105b2669311664cfd330301f812dc67934af - type: template - size: 1317 - - path: development/templates/squad/data-template.yaml - hash: sha256:d228821b39c7135e19f49405c10cae7ac43f5ffcd946d6363f053420a3a3019f - type: template - size: 2121 - - path: development/templates/squad/script-template.js - hash: sha256:2d568171ef0c7ed2822d2b1d81a5f0d02c16bd2a2fb11665c8608dd7da7fc323 - type: template - size: 3375 - - path: development/templates/squad/task-template.md - hash: sha256:3f337082a14cd33dd4876d5dc487d0ec069dad5f54aeaac9853b2a13051a70db - type: template - size: 1882 - - path: development/templates/squad/template-template.md - hash: sha256:b3f13da1cd377d18d3202bd8998fd9f26ad56b5da4b63e316cd01578998b7f55 - type: template - size: 1497 - - path: development/templates/squad/tool-template.js - hash: sha256:31e026003459be51451d0ca6905847bab2d9e397d92dc9b521b563516d27b5cf - type: template - size: 1796 - - path: development/templates/squad/workflow-template.yaml - hash: sha256:837991039c9dcb77ad4ded82035da96eac70ac2c4fd208833ace470a3ec32c0e - type: template - size: 2199 - - path: development/workflows/auto-worktree.yaml - hash: sha256:96e6795192ce4212e8f5a0c35e3d4c3103d757300ea40e2e192f97d06ee0573b - type: workflow - size: 18542 - - path: development/workflows/brownfield-discovery.yaml - hash: sha256:1038fffcb99255dd8c88be45d2bce33b34e8650812d2b190c6e6cb715bcc0290 - type: workflow - size: 35110 - - path: development/workflows/brownfield-fullstack.yaml - hash: sha256:e54b5ecf6fffd1351bad125c91be89b262773361785d1f0ee19a7dc2fcdf8822 - type: workflow - size: 11205 - - path: development/workflows/brownfield-service.yaml - hash: sha256:e8cd3ac48b12fedf1ee3016dccf789352e02ce985f263ddef8188ff1bf5633f1 - type: workflow - size: 6792 - - path: development/workflows/brownfield-ui.yaml - hash: sha256:bf47039dbbbccfa488266a9be16cdedd9b451e140d846fa9fc9fcc861dc3a63e - type: workflow - size: 7165 - - path: development/workflows/greenfield-fullstack.yaml - hash: sha256:b7b10b43f0395c94babc4d1001918d16e0ab153989853151fd04bb3353cd1fa9 - type: workflow - size: 14598 - - path: development/workflows/greenfield-service.yaml - hash: sha256:de462db07c454977d1932f234487fb5477367a22d185a2b68a262cf5b87d4eb5 - type: workflow - size: 7566 - - path: development/workflows/greenfield-ui.yaml - hash: sha256:8b0c3bb1a81424a6f7c4a17e4b675edc061dc8e572196b7c0db0133e6c497fd7 - type: workflow - size: 9191 - - path: development/workflows/qa-loop.yaml - hash: sha256:610d1e959a70d8573130dde1f9c24662cb11d4f21f282e61e328411f949ebc64 - type: workflow - size: 18739 - - path: development/workflows/README.md - hash: sha256:85d0064b454fd8eefc5312940984d23818da0b0a8cc27ba9e36f3b7ed0f48baa - type: workflow - size: 2631 - - path: development/workflows/spec-pipeline.yaml - hash: sha256:38061398e5b16c47929b0167a52adf66682366bb0073bb0a75a31c289d1afdf7 - type: workflow - size: 23730 - - path: docs/standards/AGENT-PERSONALIZATION-STANDARD-V1.md - hash: sha256:7b8e7a396590bdf63a42819130c8665594ce254715d56439454e46fc1b3be1b2 - type: documentation - size: 16023 - - path: docs/standards/AIOS-COLOR-PALETTE-QUICK-REFERENCE.md - hash: sha256:ed6f17357336a7a6df86027d2511926ae3e5058ead7abcf938ddbfdd28b81253 - type: documentation - size: 4093 - - path: docs/standards/AIOS-COLOR-PALETTE-V2.1.md - hash: sha256:11f894b8d3f68ae3e9196cf5c03dfe63e5d6e73ef5372fbcce1d0624eede0b2c - type: documentation - size: 9519 - - path: docs/standards/EXECUTOR-DECISION-TREE.md - hash: sha256:106af2a8bc009c129618fbd501e68c6927862dbbc2e28d1a5b67be9b5fc2bb5b - type: documentation - size: 19268 - - path: docs/standards/OPEN-SOURCE-VS-SERVICE-DIFFERENCES.md - hash: sha256:5205cda91227e1b199b505d7c6b3808d4cda997df59c7de87b4e208cbda6775e - type: documentation - size: 16390 - - path: docs/standards/QUALITY-GATES-SPECIFICATION.md - hash: sha256:f63934a4eb76825544926e11298521bd36a6c41788d595bb6d239c0002507aa2 - type: documentation - size: 19755 - - path: docs/standards/STANDARDS-INDEX.md - hash: sha256:c6016871dcb2f8a55317866063f70b7878dbd8a3f5ca0d5bce97ce7c9c6d864f - type: documentation - size: 8395 - - path: docs/standards/STORY-TEMPLATE-V2-SPECIFICATION.md - hash: sha256:96f89a451c2083a7079ac779be03473af22660997a4d731d1a752547b9014911 - type: documentation - size: 11590 - - path: docs/standards/TASK-FORMAT-SPECIFICATION-V1.md - hash: sha256:f46e020f07b11f6409877a1d75c6e29fa2e0310a53ab2677e2c0c42f282c6339 - type: documentation - size: 34473 - - path: elicitation/agent-elicitation.js - hash: sha256:ef13ebff1375279e7b8f0f0bbd3699a0d201f9a67127efa64c4142159a26f417 - type: elicitation - size: 9482 - - path: elicitation/task-elicitation.js - hash: sha256:cc44ad635e60cbdb67d18209b4b50d1fb2824de2234ec607a6639eb1754bfc75 - type: elicitation - size: 8296 - - path: elicitation/workflow-elicitation.js - hash: sha256:1107b7328b8694047e32eee17328241ce51d061e5c15ffdab9d1aa3340f3cd5d - type: elicitation - size: 9677 - - path: index.esm.js - hash: sha256:71a1eb8108d1b231e16b408b2a06d47eb641e78f3488f16dc3f92344093da762 - type: code - size: 533 - - path: index.js - hash: sha256:e46e4b86e48e22a6f0b7ccb91e7e901bfc779479d4ebc7e776fca6dd4de5b30b - type: code - size: 753 - - path: infrastructure/index.js - hash: sha256:8e05caec57188938d6f348444ad3abce2c06b53bdb46993fb2e8ff81c27fca4c - type: infrastructure - size: 6882 - - path: infrastructure/integrations/pm-adapters/clickup-adapter.js - hash: sha256:dbb883512d88fbe6a6af4bc038afd7496d072f7ad3e1abccc1456ddacf0b099f - type: infrastructure - size: 9774 - - path: infrastructure/integrations/pm-adapters/github-adapter.js - hash: sha256:e7ae878e8fb4d6a19ad876c3d253081fd7f245c0be87dd41238e100384a495fc - type: infrastructure - size: 10370 - - path: infrastructure/integrations/pm-adapters/jira-adapter.js - hash: sha256:86f9404dc2a4bd05b402539182648fbc5a73b65aa1ea07a7a966a7adea4e3929 - type: infrastructure - size: 12020 - - path: infrastructure/integrations/pm-adapters/local-adapter.js - hash: sha256:5cacdd59fc423437d2c458f9dc48d5a89b32c028ec45151f952dd122b874f818 - type: infrastructure - size: 4778 - - path: infrastructure/integrations/pm-adapters/README.md - hash: sha256:5f6cca188150e83faef7c3b9dcf8a2d8ce8af7a68777574e2719d0f7aa9de6fe - type: infrastructure - size: 1600 - - path: infrastructure/README.md - hash: sha256:f89ab1192fdc3b171300ab9111f614bab70c6492a7f9e55d995362465b291e63 - type: infrastructure - size: 3762 - - path: infrastructure/schemas/agent-v3-schema.json - hash: sha256:31446c49c7285d6f18f537fa78b5849dc2f7ce3e561f55bcc4a927f8a94df463 - type: infrastructure - size: 6270 - - path: infrastructure/schemas/build-state.schema.json - hash: sha256:abf108d6ffd04a5d512319838b5cc91ffb9c9c14cb7c82e062763daf6d0c7549 - type: infrastructure - size: 5111 - - path: infrastructure/schemas/task-v3-schema.json - hash: sha256:47112704515bf362507dcc59112ef460a728d9350a081e7b7d94e5bfe0d7c3e1 - type: infrastructure - size: 4088 - - path: infrastructure/scripts/aios-validator.js - hash: sha256:a48d7e1a6f33ed8f751f2b00b79b316529cd68d181a62a7b4a72ecd4858fc770 - type: script - size: 7272 - - path: infrastructure/scripts/approach-manager.js - hash: sha256:5b55493c14debde499f89f8078a997317f66dafc7e7c92b67292de13071f579e - type: script - size: 32255 - - path: infrastructure/scripts/approval-workflow.js - hash: sha256:b3785b070056e8f4f34d8d5a8fbb093139e66136788917b448959c2d4797209e - type: script - size: 21576 - - path: infrastructure/scripts/asset-inventory.js - hash: sha256:46ce90aa629e451ee645364666ed4828968f0a5d5873255c5a62f475eefece91 - type: script - size: 17503 - - path: infrastructure/scripts/atomic-layer-classifier.js - hash: sha256:61fc99fc0e1bb29a1f8a73f4f9eef73c20bcfc245c61f68b0a837364457b7fb9 - type: script - size: 8464 - - path: infrastructure/scripts/backup-manager.js - hash: sha256:88e01594b18c8c8dbd4fff7e286ca24f7790838711e6e3e340a14a9eaa5bd7fb - type: script - size: 16675 - - path: infrastructure/scripts/batch-creator.js - hash: sha256:b25d3c3aec0b5462aed3a98fcc82257fe28291c8dfebf3940d313d05e2057be1 - type: script - size: 17796 - - path: infrastructure/scripts/branch-manager.js - hash: sha256:bb7bd700855fb18bc4d08a2036a7fc854b4c85ffb857cf04348a8f31cc1ebdd1 - type: script - size: 11599 - - path: infrastructure/scripts/capability-analyzer.js - hash: sha256:65e4833932ddb560948c4d1577da72b393de751afef737cd0c3da60829703006 - type: script - size: 16193 - - path: infrastructure/scripts/changelog-generator.js - hash: sha256:6294e965d6ea47181f468587a6958663c129ba0ff82b2193a370af94fbb9fcb6 - type: script - size: 15332 - - path: infrastructure/scripts/clickup-helpers.js - hash: sha256:bfba94d9d85223005ec227ae72f4e0b0a3f54679b0a4813c78ddfbab579d6415 - type: script - size: 6945 - - path: infrastructure/scripts/code-quality-improver.js - hash: sha256:765dd10a367656b330a659b2245ef2eb9a947905fee71555198837743fc1483f - type: script - size: 39851 - - path: infrastructure/scripts/codebase-mapper.js - hash: sha256:dc3fdaea27fb37e3d2b0326f401a3b2854fa8212cd71c702a1ec2c4c9fc706f0 - type: script - size: 40724 - - path: infrastructure/scripts/commit-message-generator.js - hash: sha256:e1286241b9aa6d8918eb682bea331a8ba555341124b1e21c12cc44625ca90a6f - type: script - size: 25401 - - path: infrastructure/scripts/component-generator.js - hash: sha256:908c3622fb2d25f47b15926c461a46e82cb4edcd4acd8c792bdf9a6e30ec0daf - type: script - size: 25958 - - path: infrastructure/scripts/component-metadata.js - hash: sha256:7bd0deba07a8cd83e5e9f15c97fa6cc50c9ccfcb38a641e2ebb0b86571bae423 - type: script - size: 18783 - - path: infrastructure/scripts/component-search.js - hash: sha256:3cda988dbe9759e7e1db7cd6519dc5d2624c23bb2f379b02d905480c5148d10f - type: script - size: 7803 - - path: infrastructure/scripts/config-cache.js - hash: sha256:4f55401fee7010d01545808ed6f6c40a91ce43180d405f93d5073480512d30d5 - type: script - size: 7473 - - path: infrastructure/scripts/config-loader.js - hash: sha256:55536b22e58cdd166c80d9ce335a477a8af65b76ec4c73b7dd55bc35bf9a97d2 - type: script - size: 10640 - - path: infrastructure/scripts/conflict-resolver.js - hash: sha256:3d2794a66f16fcea95b096386dc9c2dcd31e5938d862030e7ac1f38c00a2c0bd - type: script - size: 19200 - - path: infrastructure/scripts/coverage-analyzer.js - hash: sha256:db43593e3e252f178a062e3ffd0d7d1fde01a06a41a6a58f24af0c48b713b018 - type: script - size: 28267 - - path: infrastructure/scripts/dashboard-status-writer.js - hash: sha256:1b7b31681e9af23bd9cd1b78face9a226e04b8e109ba168df875c3e10617f808 - type: script - size: 7868 - - path: infrastructure/scripts/dependency-analyzer.js - hash: sha256:e375efa02c1ac776b3243de0208a06abfb9e16cbcb807ee4ecf11678cf64df40 - type: script - size: 18055 - - path: infrastructure/scripts/dependency-impact-analyzer.js - hash: sha256:8a69615ecb79f8f41d776bd40170a2bbee5d2aa4b4d3392c86a4f6df7fff48cb - type: script - size: 21943 - - path: infrastructure/scripts/diff-generator.js - hash: sha256:569387c1dd8ee00d0ebc34b9f463438150ed9c96af2e5728fde83c36626211cf - type: script - size: 3134 - - path: infrastructure/scripts/documentation-integrity/brownfield-analyzer.js - hash: sha256:854aca42afb113431526572467210d1cedb32888a3fccec371b098c39c254b04 - type: script - size: 15033 - - path: infrastructure/scripts/documentation-integrity/config-generator.js - hash: sha256:d032615d566782fffb2201c819703129d3cd8f922dfb53ab3211ce4b1c55eae5 - type: script - size: 11297 - - path: infrastructure/scripts/documentation-integrity/deployment-config-loader.js - hash: sha256:363c59c4919151efb5a3ba25918f306737a67006204f6827b345fa5b5be14de9 - type: script - size: 9141 - - path: infrastructure/scripts/documentation-integrity/doc-generator.js - hash: sha256:6e58a80fc61b5af4780e98ac5c0c7070b1ed6281a776303d7550ad717b933afb - type: script - size: 9051 - - path: infrastructure/scripts/documentation-integrity/gitignore-generator.js - hash: sha256:989ed7ba0e48559c2e1c83bbfce3e066f44d6035d3bf028c07104280dddeb5ad - type: script - size: 8067 - - path: infrastructure/scripts/documentation-integrity/index.js - hash: sha256:7c094798c8125b2c6109a3fa4d9a1049c3df086b44e2ddb3d273b0b2a9223b2e - type: script - size: 3192 - - path: infrastructure/scripts/documentation-integrity/mode-detector.js - hash: sha256:897a9f60a78fe301f2abe51f2caad60785c6a48b26d22ebdfd8bf71097f313ef - type: script - size: 12584 - - path: infrastructure/scripts/documentation-synchronizer.js - hash: sha256:cdb461fd19008ca5f490bbcc02bef1b9d533e309769d9fa6bc04e75d87c25218 - type: script - size: 42437 - - path: infrastructure/scripts/framework-analyzer.js - hash: sha256:4c6eb37902346d63c51ede78d604bb749a1ec090cfd26843c421d4711e510665 - type: script - size: 23470 - - path: infrastructure/scripts/git-config-detector.js - hash: sha256:4b63896ed38fd38e4d77f1e3c221fcd786396555d9e1e91337963a57fe5ef2d8 - type: script - size: 6831 - - path: infrastructure/scripts/git-wrapper.js - hash: sha256:e4354cbceb1d3fe64f0a32b3b69e3f12e55f4a5770412b7cd31f92fe2cf3278c - type: script - size: 9735 - - path: infrastructure/scripts/gotchas-documenter.js - hash: sha256:8fc0003beff9149ce8f6667b154466442652cccc7a98f41166a6f1aad4a8efd3 - type: script - size: 38453 - - path: infrastructure/scripts/ide-sync/agent-parser.js - hash: sha256:b4dceac261653d85d791b6cd8b010ebfaa75cab179477b193a2448482b4aa4d4 - type: script - size: 8846 - - path: infrastructure/scripts/ide-sync/index.js - hash: sha256:0acc60e5aeb09135ff272d46b6cc43bcfbd1a1b56f05e293f4a9326929dc7a1a - type: script - size: 13425 - - path: infrastructure/scripts/ide-sync/README.md - hash: sha256:61f0890443f46ca876efc6aff66b679847bb4eb841b3a92bcc9e0ebdf6369d9d - type: script - size: 4484 - - path: infrastructure/scripts/ide-sync/redirect-generator.js - hash: sha256:658725f2832d331ee83350e620e5a79a499492172fc8f44174749e3471feb77f - type: script - size: 4518 - - path: infrastructure/scripts/ide-sync/transformers/antigravity.js - hash: sha256:d8fe023ce70651e0d83151f9f90000d8ffb51ab260f246704c1616739a001622 - type: script - size: 2784 - - path: infrastructure/scripts/ide-sync/transformers/claude-code.js - hash: sha256:f028bdef022e54a5f70c92fa6d6b0dc0877c2fc87a9f8d2f477b29d09248dab7 - type: script - size: 2225 - - path: infrastructure/scripts/ide-sync/transformers/cursor.js - hash: sha256:fe38ba6960cc7e1dd2f1de963cdfc5a4be83eb5240c696e9eea607421a23cf22 - type: script - size: 2427 - - path: infrastructure/scripts/ide-sync/transformers/trae.js - hash: sha256:784660e839d1516ba7d4f12adbde43e412adb25d6557eccf234e041866790f5b - type: script - size: 2967 - - path: infrastructure/scripts/ide-sync/transformers/windsurf.js - hash: sha256:6eec13241f1216d64acb5b69af92fb36e22f22697dd166a1afe9e4e9048884db - type: script - size: 2708 - - path: infrastructure/scripts/ide-sync/validator.js - hash: sha256:356c78125db7f88d14f4e521808e96593d729291c3d7a1c36cb02f78b4aef8fc - type: script - size: 7316 - - path: infrastructure/scripts/improvement-engine.js - hash: sha256:2a132e285295fa9455f94c3b3cc2abf0c38a1dc2faa1197bdbe36d80dc69430c - type: script - size: 24057 - - path: infrastructure/scripts/improvement-validator.js - hash: sha256:9562bdf12fa0a548f275935a0014481ebcfd627e20fdbfbdfadc4b72b4c7ad4d - type: script - size: 19310 - - path: infrastructure/scripts/llm-routing/install-llm-routing.js - hash: sha256:0f3d604068766a63ab5e60b51b48f6330e7914aa419d36c5e1f99c6ad99475be - type: script - size: 8559 - - path: infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd - hash: sha256:ab11525063cf04a9d9394233c17bc576368444f0f654dc272ff4c1d1606264b7 - type: template - size: 4132 - - path: infrastructure/scripts/llm-routing/templates/claude-free-tracked.sh - hash: sha256:be1904080b79ec25fbb9fad09465853ecc7c468dcbc005e4bc44af0e23dc6d46 - type: template - size: 3315 - - path: infrastructure/scripts/llm-routing/templates/claude-free.cmd - hash: sha256:1cc019c602f0b702fefa9b02e02fce5106539d05adb72c4e419e99f3e74bf24b - type: template - size: 2525 - - path: infrastructure/scripts/llm-routing/templates/claude-free.sh - hash: sha256:d54871ac90dae47a1a67e8d168fc3f85b04e81c95bc8691829c72a0e520d3ce1 - type: template - size: 1851 - - path: infrastructure/scripts/llm-routing/templates/claude-max.cmd - hash: sha256:30d541178e3be5e2d1dc53976757c2e9dd1dc33b13f3b2a82f4f68a689db81b0 - type: template - size: 834 - - path: infrastructure/scripts/llm-routing/templates/claude-max.sh - hash: sha256:92c8a73d51d66c79264b889b52f7663be34e64d30bc9639cbe9ee0d9d757f427 - type: template - size: 481 - - path: infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd - hash: sha256:70ceec18c2cce38c7352d623b75e86e9e01ad0b881efef437305470fb24bda65 - type: template - size: 2061 - - path: infrastructure/scripts/llm-routing/templates/deepseek-proxy.sh - hash: sha256:c8c2fb5f5911be6d2b137558000637bd1bceef7fcf5849517a954920ab86f446 - type: template - size: 2204 - - path: infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd - hash: sha256:a9a340d04c163e2c1c2b6c8a42624ded11f49acec239e1290bc98c46fef03866 - type: template - size: 1828 - - path: infrastructure/scripts/llm-routing/templates/deepseek-usage.sh - hash: sha256:d38e07b3a1bbb4d36f6613376b155fec65bc6be45d1762e9502f18f79770565b - type: template - size: 449 - - path: infrastructure/scripts/llm-routing/usage-tracker/index.js - hash: sha256:f0a51a9fc9c862a67dc0af04e34dceee16fc7664225232476d6f1cf04bee56f4 - type: script - size: 16176 - - path: infrastructure/scripts/migrate-agent.js - hash: sha256:525f6e7b5dae89b8cb08fcba066d223e5d53cf40356615657500c4f58e3a8b4b - type: script - size: 13712 - - path: infrastructure/scripts/modification-risk-assessment.js - hash: sha256:e2806a879291b0284b2baaddd994f171536945f03b7696ed2023ea56273b2273 - type: script - size: 31722 - - path: infrastructure/scripts/modification-validator.js - hash: sha256:90bfe600022ae72aedfcde026fcda2b158fd53b5a05ef1bb1f1c394255497067 - type: script - size: 16492 - - path: infrastructure/scripts/output-formatter.js - hash: sha256:915b20c6f43e3cd20d00102ff0677619b5d8116ff2e37b2a7e80470462993da8 - type: script - size: 8968 - - path: infrastructure/scripts/path-analyzer.js - hash: sha256:e0bb41724b45c511258c969ef159cbb742b91e19d46bfeacfe3757df4732c605 - type: script - size: 13092 - - path: infrastructure/scripts/pattern-extractor.js - hash: sha256:3d5f5d45f5bc88e8a9bdda2deb4dea925bfa103915c4edd12cc7d8d73b3c30f5 - type: script - size: 45035 - - path: infrastructure/scripts/performance-analyzer.js - hash: sha256:184ae133070b15fe67dd4b6dc17500b3a47bc2f066fd862716ce32070dbec8d4 - type: script - size: 23436 - - path: infrastructure/scripts/performance-and-error-resolver.js - hash: sha256:de4246a4f01f6da08c8de8a3595505ad8837524db39458f4e6c163cb671b6097 - type: script - size: 7303 - - path: infrastructure/scripts/performance-optimizer.js - hash: sha256:758819a268dd3633e38686b9923d936f88cbd95568539a0b7405b96432797178 - type: script - size: 61033 - - path: infrastructure/scripts/performance-tracker.js - hash: sha256:d62ce58ca11559e3b883624e3500760400787655a9ce6079daec6efb3b80f92c - type: script - size: 13860 - - path: infrastructure/scripts/plan-tracker.js - hash: sha256:54b2adad9a39d0d9f9190ee18514216b176eb1f890c360a13ff2b89502f1b0c6 - type: script - size: 27078 - - path: infrastructure/scripts/pm-adapter-factory.js - hash: sha256:57089ffe9307719dde31708615b21e6dedbeb4f40a304f43baa7ce9f8f8c4521 - type: script - size: 4973 - - path: infrastructure/scripts/pm-adapter.js - hash: sha256:d8383516f70e1641be210dd4b033541fb6bfafd39fd5976361b8e322cdcb1058 - type: script - size: 4056 - - path: infrastructure/scripts/project-status-loader.js - hash: sha256:bd9b16daaf031a6ca97bc683ff1005255a5d6f3fd94fa35625cd27a047a3c41e - type: script - size: 14176 - - path: infrastructure/scripts/qa-loop-orchestrator.js - hash: sha256:1f9a886d4b6f467195c3b48a3de572c51380ca3c10236e90c83082b24e9ecac2 - type: script - size: 42698 - - path: infrastructure/scripts/qa-report-generator.js - hash: sha256:5e3aa207b50b4c8e2907591b07015323affc6850ee6fa53bf94717f7d8fd739d - type: script - size: 35757 - - path: infrastructure/scripts/recovery-tracker.js - hash: sha256:ce48aeacb6582a5595ec37307ab12c345d0f6fa25411173725985b5313169deb - type: script - size: 31320 - - path: infrastructure/scripts/refactoring-suggester.js - hash: sha256:118d4cdbc64cf3238065f2fb98958305ae81e1384bc68f5a6c7b768f1232cd1e - type: script - size: 34686 - - path: infrastructure/scripts/repository-detector.js - hash: sha256:f509f2b1df4ef6cd6678e6cb15e3d821e9ce00f1676fcfda1114c182f7011061 - type: script - size: 2165 - - path: infrastructure/scripts/rollback-manager.js - hash: sha256:6391d9e16f5c75f753c2ea5eff58301ec05c9d0b2486040c45b1ef3405c2f3a1 - type: script - size: 22266 - - path: infrastructure/scripts/sandbox-tester.js - hash: sha256:019af2e23de70d7dacb49faf031ba0c1f5553ecebe52f361bab74bfca73ba609 - type: script - size: 15702 - - path: infrastructure/scripts/security-checker.js - hash: sha256:467c7366b60460ef1840492ebe6f9d9eb57c307da6b7e71c6dd35bdddf85f4c0 - type: script - size: 9535 - - path: infrastructure/scripts/spot-check-validator.js - hash: sha256:4bf2d20ded322312aef98291d2a23913da565e1622bc97366c476793c6792c81 - type: script - size: 4430 - - path: infrastructure/scripts/status-mapper.js - hash: sha256:d6a38879d63fe20ab701604824bc24f3c4f1ee9c43bedfa1e72abdb8f339dcfc - type: script - size: 2989 - - path: infrastructure/scripts/story-worktree-hooks.js - hash: sha256:8c45c7bb4993d54f9645494366e7d93a6984294a57c2601fd78286f5bf915992 - type: script - size: 10787 - - path: infrastructure/scripts/stuck-detector.js - hash: sha256:976d9d5f93e19def9cd861a6cba3e01057bdba346f14b8c5c189ba92788acf03 - type: script - size: 39109 - - path: infrastructure/scripts/subtask-verifier.js - hash: sha256:ceb0450fa12fa48f0255bb4565858eb1a97b28c30b98d36cb61d52d72e08b054 - type: script - size: 22394 - - path: infrastructure/scripts/template-engine.js - hash: sha256:93f0b72bd4f5b5e18f49c43f0f89b5a6d06cd86cf765705be4a3433fb18b89bd - type: script - size: 6958 - - path: infrastructure/scripts/template-validator.js - hash: sha256:a81f794936e61e93854bfa88aa8537d2ba05ddb2f6d5b5fce78efc014334a310 - type: script - size: 8334 - - path: infrastructure/scripts/test-generator.js - hash: sha256:90485b00c0b9e490f2394ff0fb456ea5a5614ca2431d9df55d95b54213b15184 - type: script - size: 24945 - - path: infrastructure/scripts/test-quality-assessment.js - hash: sha256:300699a7a5003ef1f18b4e865f761a8e76d0b82e001f0ba17317ef05d41c79db - type: script - size: 36898 - - path: infrastructure/scripts/test-utilities-fast.js - hash: sha256:70d87a74dac153c65d622afa4d62816e41d8d81eee6d42e1c0e498999bec7c40 - type: script - size: 3743 - - path: infrastructure/scripts/test-utilities.js - hash: sha256:da7c868b105892e3995ed6e6517188a79b8f62a079a61d4d38242c4f357c9d75 - type: script - size: 5870 - - path: infrastructure/scripts/tool-resolver.js - hash: sha256:94a5ab46dc1939d87fbb741619d8013ce17c5eae1e18ccdc78707eac2c4c927b - type: script - size: 11054 - - path: infrastructure/scripts/transaction-manager.js - hash: sha256:4c07f113b887de626cbbd1f1657ae49cb2e239dc768bc040487cc28c01a3829d - type: script - size: 17625 - - path: infrastructure/scripts/usage-analytics.js - hash: sha256:b65464e8bb37a80b19e2159903073ab4abf6de7cdab4940991b059288787d5fc - type: script - size: 18245 - - path: infrastructure/scripts/validate-output-pattern.js - hash: sha256:91111d656e8d7b38a20a1bda753e663b74318f75cdab2025c7e0b84c775fc83d - type: script - size: 6692 - - path: infrastructure/scripts/visual-impact-generator.js - hash: sha256:e05d36747f55b52f58f6bd9cc8cfd7191d6695e46302a00c53a53d3ec56847fb - type: script - size: 32830 - - path: infrastructure/scripts/worktree-manager.js - hash: sha256:5f10d59029b0dfb815a522123b611f25b5ee418e83f39b161b5fab43e6d8b424 - type: script - size: 21677 - - path: infrastructure/scripts/yaml-validator.js - hash: sha256:90c5d19862f3f17196b22038f6870a327f628b095144bc9a53a08df6ccce156b - type: script - size: 10362 - - path: infrastructure/templates/aios-sync.yaml.template - hash: sha256:4741cc143c6f26ff4c0a443ee01024433f5226e1d5715527c6570ddfe65aaed3 - type: template - size: 8853 - - path: infrastructure/templates/coderabbit.yaml.template - hash: sha256:a8f8e08e5c109b4c635a468e9b400bfb35361073de8a0883c5d4c9db84d7ed0a - type: template - size: 8321 - - path: infrastructure/templates/core-config/core-config-brownfield.tmpl.yaml - hash: sha256:de54c7ffc1d785ff2aa43fb268c0dc0ad8a7215b77080a4dc0aaf5e49e02bc58 - type: template - size: 5834 - - path: infrastructure/templates/core-config/core-config-greenfield.tmpl.yaml - hash: sha256:1b4002f26d582d00045ad4c031c53083668bd685baf179951e773b57f451e588 - type: template - size: 5119 - - path: infrastructure/templates/github-workflows/ci.yml.template - hash: sha256:ad7ea9f338b7bfec281a6136d40df3954cbaf239245e41e2eb227abf15d001d4 - type: template - size: 5089 - - path: infrastructure/templates/github-workflows/pr-automation.yml.template - hash: sha256:46c334bd347a0b36a8de55a4c1db2eb9e66b350555a50439b05000f05fbe307b - type: template - size: 10939 - - path: infrastructure/templates/github-workflows/README.md - hash: sha256:a8a385cd8e3fca3300f3cc3442edfc70995b4aafb99d6e95a8194204705189f2 - type: template - size: 2652 - - path: infrastructure/templates/github-workflows/release.yml.template - hash: sha256:bd40c93023c56489a45690a5829beda662f738f0687beb46bef31475ceee8027 - type: template - size: 6791 - - path: infrastructure/templates/gitignore/gitignore-aios-base.tmpl - hash: sha256:eea52813b21c411ada64d2560913cc853a53b8d00ad916f0c9480cd11324b764 - type: template - size: 851 - - path: infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl - hash: sha256:da10b4280d52fe7a76649d11ed9d72d452ece94bb5d46e06705ca585589d9e20 - type: template - size: 506 - - path: infrastructure/templates/gitignore/gitignore-node.tmpl - hash: sha256:46d261d54d9b57cdecd54ae2d6f19b9971b380316700824caf6026543b6afe5b - type: template - size: 1036 - - path: infrastructure/templates/gitignore/gitignore-python.tmpl - hash: sha256:f8da7c8fb5888a59332e63ea5137ed808f6cf1075fd175104a79c44479c749ba - type: template - size: 1725 - - path: infrastructure/templates/project-docs/coding-standards-tmpl.md - hash: sha256:f5eeba2464907e57fad287d842febc64ad22d27f2d33ea2fe74151646a57aaee - type: template - size: 6756 - - path: infrastructure/templates/project-docs/source-tree-tmpl.md - hash: sha256:aa4318514ae3914beba5643db59a31e10b436b7461ffec1fc41dfbfd1de687ad - type: template - size: 6447 - - path: infrastructure/templates/project-docs/tech-stack-tmpl.md - hash: sha256:b36c85de1a801be422cc09b610881f8b95751ded26a3b23c8eaa546a274ea5ba - type: template - size: 5557 - - path: infrastructure/tests/project-status-loader.test.js - hash: sha256:58d5102da2e9d28ebb0d93348431805030af364143bb45b1b08f0e559a884a2b - type: infrastructure - size: 19725 - - path: infrastructure/tests/regression-suite-v2.md - hash: sha256:3bb5c3e551ba109ffc732e92ec37574f390611c06afb65ee4310273c5164bb0b - type: infrastructure - size: 14045 - - path: infrastructure/tests/validate-module.js - hash: sha256:95b48ef84fb38d1d3f9a201629d48fdd99057f3cbece6753d861613708d24e79 - type: infrastructure - size: 4172 - - path: infrastructure/tests/worktree-manager.test.js - hash: sha256:5afd4d09f1f491c592ec29be77dd413b5c9832ca73cc164e49fcf312c34bda91 - type: infrastructure - size: 21443 - - path: infrastructure/tools/cli/github-cli.yaml - hash: sha256:222ca6016e9487d2da13bead0af5cee6099885ea438b359ff5fa5a73c7cd4820 - type: tool - size: 6073 - - path: infrastructure/tools/cli/llm-routing.yaml - hash: sha256:67facee435948b6604f0cc317866018fe7a9659a17d0a5580d87d98358c6ea3c - type: tool - size: 3539 - - path: infrastructure/tools/cli/railway-cli.yaml - hash: sha256:cab769df07cfd0a65bfed0e7140dfde3bf3c54cd6940452d2d18e18f99a63e4a - type: tool - size: 8135 - - path: infrastructure/tools/cli/supabase-cli.yaml - hash: sha256:659fefd3d8b182dd06fc5be560fcf386a028156386b2029cd51bbd7d3b5e6bfd - type: tool - size: 7871 - - path: infrastructure/tools/local/ffmpeg.yaml - hash: sha256:d481a548e0eb327513412c7ac39e4a92ac27a283f4b9e6c43211fed52281df44 - type: tool - size: 8171 - - path: infrastructure/tools/mcp/21st-dev-magic.yaml - hash: sha256:5e1b575bdb51c6b5d446a2255fa068194d2010bce56c8c0dd0b2e98e3cf61f18 - type: tool - size: 5359 - - path: infrastructure/tools/mcp/browser.yaml - hash: sha256:c28206d92a6127d299ca60955cd6f6d03c940ac8b221f1e9fc620dd7efd7b471 - type: tool - size: 3712 - - path: infrastructure/tools/mcp/clickup.yaml - hash: sha256:f8d1858164e629f730be200e5277894751d423e8894db834bea33a6a6ce9697c - type: tool - size: 17832 - - path: infrastructure/tools/mcp/context7.yaml - hash: sha256:321e0e23a787c36260efdbb1a3953235fa7dc57e77b211610ffaf33bc21fca02 - type: tool - size: 3271 - - path: infrastructure/tools/mcp/desktop-commander.yaml - hash: sha256:ec1a5db7def48d1762e68d4477ad0574bbb54a6783256870f5451c666ebdc213 - type: tool - size: 6001 - - path: infrastructure/tools/mcp/exa.yaml - hash: sha256:02576ff68b8de8a2d4e6aaffaeade78d5c208b95380feeacb37e2105c6f83541 - type: tool - size: 4028 - - path: infrastructure/tools/mcp/google-workspace.yaml - hash: sha256:f017c3154e9d480f37d94c7ddd7c3d24766b4fa7e0ee9e722600e85da75734b4 - type: tool - size: 32396 - - path: infrastructure/tools/mcp/n8n.yaml - hash: sha256:f9d9536ec47f9911e634083c3ac15cb920214ea0f052e78d4c6a27a17e9ec408 - type: tool - size: 17446 - - path: infrastructure/tools/mcp/supabase.yaml - hash: sha256:350bd31537dfef9c3df55bd477434ccbe644cdf0dd3408bf5a8a6d0c5ba78aa2 - type: tool - size: 27989 - - path: infrastructure/tools/README.md - hash: sha256:0839bc90252fba2dafde91d104d8f7e3247a6bf4798f7449df7c9899eb70d755 - type: tool - size: 5169 - - path: manifests/schema/manifest-schema.json - hash: sha256:39678986089918893f309a2469fa0615beb82b5c6f1e16e2f9b40bcac6465195 - type: manifest - size: 5481 - - path: package.json - hash: sha256:6214cb6f4617f1b5d8228152ff0756459af87b2602d5a68ddf8da83fc5a0b194 - type: other - size: 2458 - - path: product/checklists/accessibility-wcag-checklist.md - hash: sha256:56126182b25e9b7bdde43f75315e33167eb49b1f9a9cb0e9a37bc068af40aeab - type: checklist - size: 1963 - - path: product/checklists/architect-checklist.md - hash: sha256:ecbcc8e6b34f813bc73ebcc28482c045ef12c6b17808ee6f70a808eee1818911 - type: checklist - size: 18858 - - path: product/checklists/change-checklist.md - hash: sha256:e74f27d217e2a4119200773729b7869754889a584867937a34f59ae4b817166b - type: checklist - size: 8402 - - path: product/checklists/component-quality-checklist.md - hash: sha256:ec4e34a3fc4a071d346a8ba473f521d2a38e5eb07d1656fee6ff108e5cd7b62f - type: checklist - size: 2397 - - path: product/checklists/database-design-checklist.md - hash: sha256:6d3cf038f0320db0e6daf9dba61e4c29269ed73c793df5618e155ebd07b6c200 - type: checklist - size: 4104 - - path: product/checklists/dba-predeploy-checklist.md - hash: sha256:482136936a2414600b59d4d694526c008287e3376ed73c9a93de78d7d7bd3285 - type: checklist - size: 3518 - - path: product/checklists/dba-rollback-checklist.md - hash: sha256:060847cba7ef223591c2c1830c65994fd6cf8135625d6953a3a5b874301129c5 - type: checklist - size: 3268 - - path: product/checklists/migration-readiness-checklist.md - hash: sha256:6231576966f24b30c00fe7cc836359e10c870c266a30e5d88c6b3349ad2f1d17 - type: checklist - size: 1970 - - path: product/checklists/pattern-audit-checklist.md - hash: sha256:2eb28cb0e7abd8900170123c1d080c1bbb81ccb857eeb162c644f40616b0875e - type: checklist - size: 2126 - - path: product/checklists/pm-checklist.md - hash: sha256:6828efd3acf32638e31b8081ca0c6f731aa5710c8413327db5a8096b004aeb2b - type: checklist - size: 13028 - - path: product/checklists/po-master-checklist.md - hash: sha256:506a3032f461c7ae96c338600208575be4f4823d2fe7c92fe304a4ff07cc5390 - type: checklist - size: 16585 - - path: product/checklists/pre-push-checklist.md - hash: sha256:8b96f7216101676b86b314c347fa8c6d616cde21dbc77ef8f77b8d0b5770af2a - type: checklist - size: 3345 - - path: product/checklists/release-checklist.md - hash: sha256:a5e66e27d115abd544834a70f3dda429bc486fbcb569870031c4f79fd8ac6187 - type: checklist - size: 3731 - - path: product/checklists/self-critique-checklist.md - hash: sha256:1a0433655aa463d0503460487e651e7cc464e2e5f4154819199a99f585ed01ce - type: checklist - size: 10518 - - path: product/checklists/story-dod-checklist.md - hash: sha256:725b60a16a41886a92794e54b9efa8359eab5f09813cd584fa9e8e1519c78dc4 - type: checklist - size: 5154 - - path: product/checklists/story-draft-checklist.md - hash: sha256:235c2e2a22c5ce4b7236e528a1e87d50671fc357bff6a5128b9b812f70bb32af - type: checklist - size: 8496 - - path: product/data/atomic-design-principles.md - hash: sha256:66153135e28394178c4f8f33441c45a2404587c2f07d25ad09dde54f3f5e1746 - type: data - size: 2296 - - path: product/data/brainstorming-techniques.md - hash: sha256:4c5a558d21eb620a8c820d8ca9807b2d12c299375764289482838f81ef63dbce - type: data - size: 1888 - - path: product/data/consolidation-algorithms.md - hash: sha256:2f2561be9e6281f6352f05e1c672954001f919c4664e3fecd6fcde24fdd4d240 - type: data - size: 3517 - - path: product/data/database-best-practices.md - hash: sha256:8331f001e903283633f0123d123546ef3d4682ed0e0f9516b4df391fe57b9b7d - type: data - size: 4789 - - path: product/data/design-token-best-practices.md - hash: sha256:10cf3c824bba452ee598e2325b8bfb2068f188d9ac3058b9e034ddf34bf4791a - type: data - size: 2258 - - path: product/data/elicitation-methods.md - hash: sha256:f8e46f90bd0acc1e9697086d7a2008c7794bc767e99d0037c64e6800e9d17ef4 - type: data - size: 5046 - - path: product/data/integration-patterns.md - hash: sha256:b1628f1574cd32d4bc74a33b3a57eba623ee171b4d3756714d32ac1641ea144a - type: data - size: 4826 - - path: product/data/migration-safety-guide.md - hash: sha256:42200ca180d4586447304dfc7f8035ccd09860b6ac34c72b63d284e57c94d2db - type: data - size: 7896 - - path: product/data/mode-selection-best-practices.md - hash: sha256:4ed5ee7aaeadb2e3c12029b7cae9a6063f3a7b016fdd0d53f9319d461ddf3ea1 - type: data - size: 10531 - - path: product/data/postgres-tuning-guide.md - hash: sha256:4715262241ae6ba2da311865506781bd7273fa6ee1bd55e15968dfda542c2bec - type: data - size: 6359 - - path: product/data/rls-security-patterns.md - hash: sha256:e3e12a06b483c1bda645e7eb361a230bdef106cc5d1140a69b443a4fc2ad70ef - type: data - size: 7329 - - path: product/data/roi-calculation-guide.md - hash: sha256:f00a3c039297b3cb6e00f68d5feb6534a27c2a0ad02afd14df50e4e0cf285aa4 - type: data - size: 2775 - - path: product/data/supabase-patterns.md - hash: sha256:9ed119bc89f859125a0489036d747ff13b6c475a9db53946fdb7f3be02b41e0a - type: data - size: 6926 - - path: product/data/test-levels-framework.md - hash: sha256:836e10742d12ccd8c226b756aea002e94bdc597344d3ba31ebeeff2dc4176dfc - type: data - size: 3434 - - path: product/data/test-priorities-matrix.md - hash: sha256:37cbe716976debc7385d9bc67e907d298f3b715fade534f437ca953c2b1b2331 - type: data - size: 3966 - - path: product/data/wcag-compliance-guide.md - hash: sha256:8f5a97e1522da2193e2a2eae18dc68c4477acf3e2471b50b46885163cefa40e6 - type: data - size: 4994 - - path: product/README.md - hash: sha256:ed0c133bfc5a09f86409d22f8f31f172119f2074161d4cd2bae041eabb839159 - type: product - size: 1709 - - path: product/templates/activation-instructions-inline-greeting.yaml - hash: sha256:78f235d6a98b933d2be48532d113a0cc398cee59c6d653958f8729c7babf1e47 - type: template - size: 2509 - - path: product/templates/activation-instructions-template.md - hash: sha256:79c5e502a10bd6247ae3c571123c3de1bd000cd8f6501cc0164f09eaa14693fc - type: template - size: 9082 - - path: product/templates/adr.hbs - hash: sha256:401c2a3ce81905cd4665439d4e2afece92a7c93a1499a927b3522272e6a58027 - type: template - size: 2337 - - path: product/templates/agent-template.yaml - hash: sha256:4ad34c41d9e7546c208e4680faa8a30969d6505d59d17111b27d2963a8a22e73 - type: template - size: 3210 - - path: product/templates/architecture-tmpl.yaml - hash: sha256:34bdfeb7add086187f9541b65ff23029d797c816eff0dcf1e6c1758798b4eb8f - type: template - size: 28281 - - path: product/templates/brainstorming-output-tmpl.yaml - hash: sha256:620eae62338614b33045e1531293ace06b9d5465910e1b6f961881924a27d010 - type: template - size: 4877 - - path: product/templates/brownfield-architecture-tmpl.yaml - hash: sha256:5d399d93a42b674758515e5cf70ffb21cd77befc9f54a8fe0b9dba0773bbbf66 - type: template - size: 21186 - - path: product/templates/brownfield-prd-tmpl.yaml - hash: sha256:bc1852d15e3a383c7519e5976094de3055c494fdd467acd83137700c900c4c61 - type: template - size: 14755 - - path: product/templates/changelog-template.md - hash: sha256:af44d857c9bf8808e89419d1d859557c3c827de143be3c0f36f2a053c9ee9197 - type: template - size: 2462 - - path: product/templates/command-rationalization-matrix.md - hash: sha256:2408853f1c411531fbbe90b9ebb1d264fbd0bda9c1c3806c34b940f49847e896 - type: template - size: 4861 - - path: product/templates/competitor-analysis-tmpl.yaml - hash: sha256:690cde6406250883a765eddcbad415c737268525340cf2c8679c8f3074c9d507 - type: template - size: 11659 - - path: product/templates/component-react-tmpl.tsx - hash: sha256:bfbfab502da2064527948f70c9a59174f20b81472ac2ea6eb999f02c9bcaf3df - type: template - size: 2686 - - path: product/templates/current-approach-tmpl.md - hash: sha256:ec258049a5cda587b24523faf6b26ed0242765f4e732af21c4f42e42cf326714 - type: template - size: 803 - - path: product/templates/dbdr.hbs - hash: sha256:67de8a2a0fd90ed71111cb31a4c84209ff8b09b4ae263158a0f545ae3ac84cc5 - type: template - size: 4380 - - path: product/templates/design-story-tmpl.yaml - hash: sha256:bbf1a20323b217b668c8466307988e505e49f4e472df47b6411b6037511c9b7d - type: template - size: 19353 - - path: product/templates/ds-artifact-analysis.md - hash: sha256:2ef1866841e4dcd55f9510f7ca14fd1f754f1e9c8a66cdc74d37ebcee13ede5d - type: template - size: 890 - - path: product/templates/engine/elicitation.js - hash: sha256:01e327bee674ff9d01ed0f4f553b42a3cf178780811c6f88bbd86c30ffaeb6cc - type: template - size: 9310 - - path: product/templates/engine/index.js - hash: sha256:cca6a31765d314a36e6af597638865ea9a0559c08496046b789fcc47f850d083 - type: template - size: 9303 - - path: product/templates/engine/loader.js - hash: sha256:a67cd30d22cd12c3fea546dfbbba6becc9f014ba5bdfd6d28f77bdc7441c3738 - type: template - size: 6499 - - path: product/templates/engine/renderer.js - hash: sha256:9b1de0f583462b72215f24e0b02e635110e75459cffeab165a03c7f91088ae39 - type: template - size: 9898 - - path: product/templates/engine/schemas/adr.schema.json - hash: sha256:2cd4c78d9c2664695df163d033709122b0b37c70fd4f92c9bf4ea17503d4db0b - type: template - size: 3017 - - path: product/templates/engine/schemas/dbdr.schema.json - hash: sha256:9d5f4e3774830f545617e801ec24ea6649afb2ab217fffda4f6fa3ec5136f2ea - type: template - size: 5936 - - path: product/templates/engine/schemas/epic.schema.json - hash: sha256:c2e898276cf89338b9fa8d619c18c40d1ed1e4390d63cc779b439c37380a5317 - type: template - size: 4666 - - path: product/templates/engine/schemas/pmdr.schema.json - hash: sha256:3e3883d552f2fa0f1b9cd6d1621e9788858d81f2c9faa66fbdfc20744cddf855 - type: template - size: 4964 - - path: product/templates/engine/schemas/prd-v2.schema.json - hash: sha256:b6a5fcb6aa6ba4417f55673f2432fdc96d3b178ccd494b56796b74271cbe9ebe - type: template - size: 8122 - - path: product/templates/engine/schemas/prd.schema.json - hash: sha256:a68c16308518ee12339d63659bef8b145d0101dcf7fe1e4e06ccad1c20a4b61a - type: template - size: 4458 - - path: product/templates/engine/schemas/story.schema.json - hash: sha256:23d037e35a7ebecc6af86ef30223b2c20e3a938a4c9f4b6ca18a8cec6646a005 - type: template - size: 6106 - - path: product/templates/engine/schemas/task.schema.json - hash: sha256:01ed077417b76d54bb2aa93f94d3ca4b9587bb957dd269ff31f7f707f1efda37 - type: template - size: 4010 - - path: product/templates/engine/validator.js - hash: sha256:159422012586b65933dca98f7cc0274ebc8a867c79533340b548fc9eaca41944 - type: template - size: 7978 - - path: product/templates/epic.hbs - hash: sha256:abc175a126ff12aaf8fc06201fd36ea8415806d49b95bb86197829997c17a610 - type: template - size: 4080 - - path: product/templates/eslintrc-security.json - hash: sha256:657d40117261d6a52083984d29f9f88e79040926a64aa4c2058a602bfe91e0d5 - type: template - size: 941 - - path: product/templates/front-end-architecture-tmpl.yaml - hash: sha256:de0432b4f98236c3a1d6cc9975b90fbc57727653bdcf6132355c0bcf0b4dbb9c - type: template - size: 10241 - - path: product/templates/front-end-spec-tmpl.yaml - hash: sha256:9033c7cccbd0893c11545c680f29c6743de8e7ad8e761c6c2487e2985b0a4411 - type: template - size: 13997 - - path: product/templates/fullstack-architecture-tmpl.yaml - hash: sha256:1ac74304138be53d87808b8e4afe6f870936a1f3a9e35e18c3321b3d42145215 - type: template - size: 33326 - - path: product/templates/github-actions-cd.yml - hash: sha256:c9ef00ed1a691d634bb6a4927b038c96dcbc65e4337432eb2075e9ef302af85b - type: template - size: 7204 - - path: product/templates/github-actions-ci.yml - hash: sha256:b64abbfdaf10b61d28ce0391fbcc2c54136cf14f4996244808341bb5ced0168e - type: template - size: 4664 - - path: product/templates/github-pr-template.md - hash: sha256:f04dc7a2a98f3ada40a54a62d93ed2ee289c4b11032ef420acf10fbfe19d1dc5 - type: template - size: 1721 - - path: product/templates/gordon-mcp.yaml - hash: sha256:01dd642f542fd89e27f6c040f865d30d7ba7c47d0888c276ec1fd808b9df2268 - type: template - size: 3695 - - path: product/templates/ide-rules/antigravity-rules.md - hash: sha256:e5be779c38724ae8511aff6bd72c5a618c329f5729d9b2ad310f867fa1831c8b - type: template - size: 3081 - - path: product/templates/ide-rules/claude-rules.md - hash: sha256:47a9dfb33826abaee86acdffb46594eea40c3bef63559b0bf7861594c76ff2fa - type: template - size: 6350 - - path: product/templates/ide-rules/cline-rules.md - hash: sha256:2475324a2d0ec92e4132a9a77631f21a34d51fce8da52fd03f945fc036de564d - type: template - size: 2838 - - path: product/templates/ide-rules/copilot-rules.md - hash: sha256:9c614000604f4e073a81b594f3ff4bb86362b9a23559716bc68d9781c0ea223c - type: template - size: 3099 - - path: product/templates/ide-rules/cursor-rules.md - hash: sha256:925bd5e4cd9f463f90910fda047593383346dce128d281e81de04cbb7663ecd0 - type: template - size: 3071 - - path: product/templates/ide-rules/roo-rules.md - hash: sha256:c6b4d8779f36c4629d48b18f5a686bc5fba4d07b6a334b4aebb56cf7d517ad63 - type: template - size: 3061 - - path: product/templates/ide-rules/trae-rules.md - hash: sha256:a1e3c48b83ae4498a1364f5e1498fa6c8c87f6d480f572c629e82ab4818b153d - type: template - size: 3326 - - path: product/templates/ide-rules/windsurf-rules.md - hash: sha256:7c880de0dec8b06eb3390a56614996c6033c1939907d77f73f4f6f85ae42b3e2 - type: template - size: 2604 - - path: product/templates/index-strategy-tmpl.yaml - hash: sha256:6db2b40f6eef47f4faa31ce513ee7b0d5f04d9a5e081a72e0cdbad402eb444ae - type: template - size: 1469 - - path: product/templates/market-research-tmpl.yaml - hash: sha256:a908f070009aa0403f9db542585401912aabe7913726bd2fa26b7954f162b674 - type: template - size: 10183 - - path: product/templates/mcp-workflow.js - hash: sha256:5fec23cb703bf63f4d8a9f057bc37ba81ea3467b4e65079fda6acb8963954c1b - type: template - size: 8101 - - path: product/templates/migration-plan-tmpl.yaml - hash: sha256:d0b8580cab768484a2730b7a7f1032e2bab9643940d29dd3c351b7ac930e8ea1 - type: template - size: 30624 - - path: product/templates/migration-strategy-tmpl.md - hash: sha256:957ffccbe9eb1f1ea90a8951ef9eb187d22e50c2f95c2ff048580892d2f2e25b - type: template - size: 14442 - - path: product/templates/personalized-agent-template.md - hash: sha256:a47621f29a2ad8a98be84d647dc1617b5be7c93ca2b62090a7338d413a6a7fc5 - type: template - size: 9355 - - path: product/templates/personalized-checklist-template.md - hash: sha256:de6c7f9713448a7e3c7e3035bf025c93024c4b21420511777c978571ae2ea18f - type: template - size: 8288 - - path: product/templates/personalized-task-template-v2.md - hash: sha256:be5da24709e4424d0c878ff59dcd860d816f42a568cb7ce7030875b31a608070 - type: template - size: 23665 - - path: product/templates/personalized-task-template.md - hash: sha256:91b99a413d25c5abea5a01a1d732d9b97733618aff25ca7bac1cacaeaa9d88c3 - type: template - size: 7935 - - path: product/templates/personalized-template-file.yaml - hash: sha256:70a2284cf6ed5b36459ce734d022a49bddb7d1f9bc36a35f37a94989d9c134b8 - type: template - size: 8975 - - path: product/templates/personalized-workflow-template.yaml - hash: sha256:277c2e995a19bdf68de30d7d44e82a3b1593cd95ae3b9d4b5cf58096c43e1d17 - type: template - size: 11268 - - path: product/templates/pmdr.hbs - hash: sha256:90cb8dcb877938af538a6c7470233a0d908dc1a1041cffe845ad196887ab13a5 - type: template - size: 3425 - - path: product/templates/prd-tmpl.yaml - hash: sha256:f94734d78f9df14e0236719dfc63666a4506bcc076fbcdb5e5c5e5e1a3660876 - type: template - size: 11952 - - path: product/templates/prd-v2.0.hbs - hash: sha256:6a716525255c1236d75bfc1e2be6005006ba827fdf2b4d55e7453140a13df71a - type: template - size: 4728 - - path: product/templates/prd.hbs - hash: sha256:b110a469ae0ba12ccaf5cae59daefbf08ba6e1b96cb6f1d5afc49c1a2d6739d3 - type: template - size: 3626 - - path: product/templates/project-brief-tmpl.yaml - hash: sha256:b8d388268c24dc5018f48a87036d591b11cb122fafe9b59c17809b06ea5d9d58 - type: template - size: 8297 - - path: product/templates/qa-gate-tmpl.yaml - hash: sha256:a0d3e4a37ee8f719aacb8a31949522bfa239982198d0f347ea7d3f44ad8003ca - type: template - size: 6876 - - path: product/templates/qa-report-tmpl.md - hash: sha256:d4709f87fc0d08a0127b321cea2a8ee4ff422677520238d29ab485545b491d9a - type: template - size: 3840 - - path: product/templates/rls-policies-tmpl.yaml - hash: sha256:3c303ab5a5f95c89f0caf9c632296e8ca43e29a921484523016c1c5bc320428f - type: template - size: 33739 - - path: product/templates/schema-design-tmpl.yaml - hash: sha256:7c5b7dfc67e1332e1fbf39657169094e2b92cd4fd6c7b441c3586981c732af95 - type: template - size: 11950 - - path: product/templates/shock-report-tmpl.html - hash: sha256:f6b3984683b9c0e22550aaab63f002c01d6d9d3fe2af0e344f7dafbd444e4a19 - type: template - size: 17167 - - path: product/templates/spec-tmpl.md - hash: sha256:5f3a97a1d4cc5c0fe81432d942cdd3ac2ec43c6785c3594ba3e1070601719718 - type: template - size: 3399 - - path: product/templates/state-persistence-tmpl.yaml - hash: sha256:7ff9caabce83ccc14acb05e9d06eaf369a8ebd54c2ddf4988efcc942f6c51037 - type: template - size: 6763 - - path: product/templates/story-tmpl.yaml - hash: sha256:907abc5ff688761177b789d8b529d2071691a7cfa69871a05456967346096aaf - type: template - size: 12432 - - path: product/templates/story.hbs - hash: sha256:5a51064b2e371b3e2b22080df2993da0c2517c442c80e3cada3006387a4d29ab - type: template - size: 5846 - - path: product/templates/task-execution-report.md - hash: sha256:6ca0126115ddb0c31b584a964a9938dbbbb8e187e02d6001bd5b69d3d4359992 - type: template - size: 10129 - - path: product/templates/task-template.md - hash: sha256:3e12e50b85c1ff31c33f0f7055f365d3cd69405f32f4869cf30dd3d005f9d2de - type: template - size: 2474 - - path: product/templates/task.hbs - hash: sha256:6aacffe2c92bf87d3040f2de75f45a586d819f1f73fcdabfadeca6ecb30f1f20 - type: template - size: 2875 - - path: product/templates/tmpl-comment-on-examples.sql - hash: sha256:254002c3fbc63cfcc5848b1d4b15822ce240bf5f57e6a1c8bb984e797edc2691 - type: template - size: 6373 - - path: product/templates/tmpl-migration-script.sql - hash: sha256:44ef63ea475526d21a11e3c667c9fdb78a9fddace80fdbaa2312b7f2724fbbb5 - type: template - size: 3038 - - path: product/templates/tmpl-rls-granular-policies.sql - hash: sha256:36c2fd8c6d9eebb5d164acb0fb0c87bc384d389264b4429ce21e77e06318f5f3 - type: template - size: 3426 - - path: product/templates/tmpl-rls-kiss-policy.sql - hash: sha256:5210d37fce62e5a9a00e8d5366f5f75653cd518be73fbf96333ed8a6712453c7 - type: template - size: 309 - - path: product/templates/tmpl-rls-roles.sql - hash: sha256:2d032a608a8e87440c3a430c7d69ddf9393d8813d8d4129270f640dd847425c3 - type: template - size: 4727 - - path: product/templates/tmpl-rls-simple.sql - hash: sha256:f67af0fa1cdd2f2af9eab31575ac3656d82457421208fd9ccb8b57ca9785275e - type: template - size: 2992 - - path: product/templates/tmpl-rls-tenant.sql - hash: sha256:36629ed87a2c72311809cc3fb96298b6f38716bba35bc56c550ac39d3321757a - type: template - size: 5130 - - path: product/templates/tmpl-rollback-script.sql - hash: sha256:8b84046a98f1163faf7350322f43831447617c5a63a94c88c1a71b49804e022b - type: template - size: 2734 - - path: product/templates/tmpl-seed-data.sql - hash: sha256:a65e73298f46cd6a8e700f29b9d8d26e769e12a57751a943a63fd0fe15768615 - type: template - size: 5716 - - path: product/templates/tmpl-smoke-test.sql - hash: sha256:aee7e48bb6d9c093769dee215cacc9769939501914e20e5ea8435b25fad10f3c - type: template - size: 739 - - path: product/templates/tmpl-staging-copy-merge.sql - hash: sha256:55988caeb47cc04261665ba7a37f4caa2aa5fac2e776fdbc5964e0587af24450 - type: template - size: 4220 - - path: product/templates/tmpl-stored-proc.sql - hash: sha256:2b205ff99dc0adfade6047a4d79f5b50109e50ceb45386e5c886437692c7a2a3 - type: template - size: 3979 - - path: product/templates/tmpl-trigger.sql - hash: sha256:93abdc92e1b475d1370094e69a9d1b18afd804da6acb768b878355c798bd8e0e - type: template - size: 5424 - - path: product/templates/tmpl-view-materialized.sql - hash: sha256:47935510f03d4ad9b2200748e65441ce6c2d6a7c74750395eca6831d77c48e91 - type: template - size: 4496 - - path: product/templates/tmpl-view.sql - hash: sha256:22557b076003a856b32397f05fa44245a126521de907058a95e14dd02da67aff - type: template - size: 5093 - - path: product/templates/token-exports-css-tmpl.css - hash: sha256:d937b8d61cdc9e5b10fdff871c6cb41c9f756004d060d671e0ae26624a047f62 - type: template - size: 6038 - - path: product/templates/token-exports-tailwind-tmpl.js - hash: sha256:1e99f1be493b4b3dac1b2a9abc1ae1dd9146f26f86bed229c232690114c3a377 - type: template - size: 10293 - - path: product/templates/tokens-schema-tmpl.yaml - hash: sha256:66a7c164278cbe8b41dcc8525e382bdf5c59673a6694930aa33b857f199b4c2b - type: template - size: 8004 - - path: product/templates/workflow-template.yaml - hash: sha256:5a3a4519791b4cce6059c34390408167cbd5c69dd48c0050c8a0b11739435825 - type: template - size: 3484 - - path: scripts/aios-doc-template.md - hash: sha256:6bfd19c9953f2c28007eba320cfdd4207809ce878bd3e5f1273ec1349edccc1a - type: script - size: 8761 - - path: scripts/batch-migrate-phase1.ps1 - hash: sha256:78d06bbded9f22862b200a9f5f7c8c74298087d289d97cdc439f3b7885b765b4 - type: script - size: 974 - - path: scripts/batch-migrate-phase2.ps1 - hash: sha256:0488b4d77bff47b8b7add09c76410e6c68009896899a8202c9376f835119ab79 - type: script - size: 2591 - - path: scripts/batch-migrate-phase3.ps1 - hash: sha256:615b11d1bd927135d3cba90c49c6cbd4aaff68c9059e08218c53118a322b017e - type: script - size: 1492 - - path: scripts/command-execution-hook.js - hash: sha256:ef72a3df899b1acf26064b00d0a3b39172f8f0b4893ead45189df8dae2eadac3 - type: script - size: 5047 - - path: scripts/migrate-framework-docs.sh - hash: sha256:b453931ec91e85b7f2e71d8508960e742aaa85fa44a89221ff257d472ab61ca3 - type: script - size: 9788 - - path: scripts/README.md - hash: sha256:197f6f703ec52c1e2c5ea0468b6cd8031ed7b9b4b563887dcd8c4a388efee059 - type: script - size: 4527 - - path: scripts/session-context-loader.js - hash: sha256:2581477ca682c6788fc57759b7fc697ffbcaab0a2c1c0cd6eb4f9ad228bb1020 - type: script - size: 1583 - - path: scripts/test-template-system.js - hash: sha256:87465ac02b079166479b9d50fe6e12a101bcaa81d47f1aace9b346e264c04712 - type: script - size: 26029 - - path: scripts/validate-phase1.ps1 - hash: sha256:2f694151ae90af1a9cb8fe890037a51e60115ff8edf636704e8f11e7ac23b23a - type: script - size: 768 - - path: scripts/workflow-management.md - hash: sha256:68ca29e897a820d8209f8bd5d5aa73b3347036511b6ee3ee111238dddaee1813 - type: script - size: 1708 - - path: user-guide.md - hash: sha256:abcef62ecd991d311ef2b1858ae14aeed76e7e9d3579fab73760936926c57553 - type: documentation - size: 38581 - - path: working-in-the-brownfield.md - hash: sha256:3daeaf85acb49578b29eed2085736274a5d144e3eaec53738d9220362442fd7d - type: documentation - size: 10297 + - core/README.md + - core/SHARD-TRANSLATION-GUIDE.md + - core/component-creation-guide.md + - core/session-update-pattern.md + - core/template-syntax.md + - core/troubleshooting-guide.md + - core/migration-config.yaml + - core/module-mapping.yaml + - core/quality-gate-config.yaml + - core/README.md + - development/README.md + - development/team-all.yaml + - development/team-fullstack.yaml + - development/team-ide-minimal.yaml + - development/team-no-ui.yaml + - development/team-qa-focused.yaml + - development/aios-master.md + - development/analyst.md + - development/architect.md + - development/data-engineer.md + - development/dev.md + - development/devops.md + - development/pm.md + - development/po.md + - development/qa.md + - development/sm.md + - development/squad-creator.md + - development/ux-design-expert.md + - development/README.md + - development/add-mcp.md + - development/advanced-elicitation.md + - development/analyst-facilitate-brainstorming.md + - development/analyze-brownfield.md + - development/analyze-framework.md + - development/analyze-performance.md + - development/analyze-project-structure.md + - development/apply-qa-fixes.md + - development/architect-analyze-impact.md + - development/audit-codebase.md + - development/audit-tailwind-config.md + - development/audit-utilities.md + - development/bootstrap-shadcn-library.md + - development/brownfield-create-epic.md + - development/brownfield-create-story.md + - development/build-component.md + - development/calculate-roi.md + - development/check-docs-links.md + - development/ci-cd-configuration.md + - development/cleanup-utilities.md + - development/collaborative-edit.md + - development/compose-molecule.md + - development/consolidate-patterns.md + - development/correct-course.md + - development/create-agent.md + - development/create-brownfield-story.md + - development/create-deep-research-prompt.md + - development/create-doc.md + - development/create-next-story.md + - development/create-service.md + - development/create-suite.md + - development/create-task.md + - development/create-workflow.md + - development/db-analyze-hotpaths.md + - development/db-apply-migration.md + - development/db-bootstrap.md + - development/db-domain-modeling.md + - development/db-dry-run.md + - development/db-env-check.md + - development/db-expansion-pack-integration.md + - development/db-explain.md + - development/db-impersonate.md + - development/db-load-csv.md + - development/db-policy-apply.md + - development/db-rls-audit.md + - development/db-rollback.md + - development/db-run-sql.md + - development/db-schema-audit.md + - development/db-seed.md + - development/db-smoke-test.md + - development/db-snapshot.md + - development/db-supabase-setup.md + - development/db-verify-order.md + - development/deprecate-component.md + - development/dev-apply-qa-fixes.md + - development/dev-backlog-debt.md + - development/dev-develop-story.md + - development/dev-improve-code-quality.md + - development/dev-optimize-performance.md + - development/dev-suggest-refactoring.md + - development/dev-validate-next-story.md + - development/document-project.md + - development/environment-bootstrap.md + - development/execute-checklist.md + - development/export-design-tokens-dtcg.md + - development/extend-pattern.md + - development/extract-tokens.md + - development/facilitate-brainstorming-session.md + - development/generate-ai-frontend-prompt.md + - development/generate-documentation.md + - development/generate-migration-strategy.md + - development/generate-shock-report.md + - development/github-devops-github-pr-automation.md + - development/github-devops-pre-push-quality-gate.md + - development/github-devops-repository-cleanup.md + - development/github-devops-version-management.md + - development/health-check.yaml + - development/improve-self.md + - development/index-docs.md + - development/init-project-status.md + - development/integrate-expansion-pack.md + - development/kb-mode-interaction.md + - development/learn-patterns.md + - development/mcp-workflow.md + - development/modify-agent.md + - development/modify-task.md + - development/modify-workflow.md + - development/next.md + - development/patterns.md + - development/po-backlog-add.md + - development/po-manage-story-backlog.md + - development/po-pull-story-from-clickup.md + - development/po-pull-story.md + - development/po-stories-index.md + - development/po-sync-story-to-clickup.md + - development/po-sync-story.md + - development/pr-automation.md + - development/propose-modification.md + - development/qa-backlog-add-followup.md + - development/qa-gate.md + - development/qa-generate-tests.md + - development/qa-nfr-assess.md + - development/qa-review-proposal.md + - development/qa-review-story.md + - development/qa-risk-profile.md + - development/qa-run-tests.md + - development/qa-test-design.md + - development/qa-trace-requirements.md + - development/release-management.md + - development/search-mcp.md + - development/security-audit.md + - development/security-scan.md + - development/setup-database.md + - development/setup-design-system.md + - development/setup-github.md + - development/setup-llm-routing.md + - development/setup-mcp-docker.md + - development/setup-project-docs.md + - development/shard-doc.md + - development/sm-create-next-story.md + - development/squad-creator-analyze.md + - development/squad-creator-create.md + - development/squad-creator-design.md + - development/squad-creator-download.md + - development/squad-creator-extend.md + - development/squad-creator-list.md + - development/squad-creator-migrate.md + - development/squad-creator-publish.md + - development/squad-creator-sync-ide-command.md + - development/squad-creator-sync-synkra.md + - development/squad-creator-validate.md + - development/sync-documentation.md + - development/tailwind-upgrade.md + - development/test-as-user.md + - development/test-validation-task.md + - development/undo-last.md + - development/update-manifest.md + - development/ux-create-wireframe.md + - development/ux-ds-scan-artifact.md + - development/ux-user-research.md + - development/validate-next-story.md + - development/waves.md + - development/agent-template.md + - development/checklist-template.md + - development/data-template.yaml + - development/task-template.md + - development/template-template.md + - development/workflow-template.yaml + - development/README.md + - development/brownfield-discovery.yaml + - development/brownfield-fullstack.yaml + - development/brownfield-service.yaml + - development/brownfield-ui.yaml + - development/greenfield-fullstack.yaml + - development/greenfield-service.yaml + - development/greenfield-ui.yaml + - product/README.md + - product/accessibility-wcag-checklist.md + - product/architect-checklist.md + - product/change-checklist.md + - product/component-quality-checklist.md + - product/database-design-checklist.md + - product/dba-predeploy-checklist.md + - product/dba-rollback-checklist.md + - product/migration-readiness-checklist.md + - product/pattern-audit-checklist.md + - product/pm-checklist.md + - product/po-master-checklist.md + - product/pre-push-checklist.md + - product/release-checklist.md + - product/story-dod-checklist.md + - product/story-draft-checklist.md + - product/atomic-design-principles.md + - product/brainstorming-techniques.md + - product/consolidation-algorithms.md + - product/database-best-practices.md + - product/design-token-best-practices.md + - product/elicitation-methods.md + - product/integration-patterns.md + - product/migration-safety-guide.md + - product/mode-selection-best-practices.md + - product/postgres-tuning-guide.md + - product/rls-security-patterns.md + - product/roi-calculation-guide.md + - product/supabase-patterns.md + - product/test-levels-framework.md + - product/test-priorities-matrix.md + - product/wcag-compliance-guide.md + - product/activation-instructions-inline-greeting.yaml + - product/activation-instructions-template.md + - product/agent-template.yaml + - product/architecture-tmpl.yaml + - product/brainstorming-output-tmpl.yaml + - product/brownfield-architecture-tmpl.yaml + - product/brownfield-prd-tmpl.yaml + - product/changelog-template.md + - product/command-rationalization-matrix.md + - product/competitor-analysis-tmpl.yaml + - product/design-story-tmpl.yaml + - product/ds-artifact-analysis.md + - product/front-end-architecture-tmpl.yaml + - product/front-end-spec-tmpl.yaml + - product/fullstack-architecture-tmpl.yaml + - product/github-actions-cd.yml + - product/github-actions-ci.yml + - product/github-pr-template.md + - product/gordon-mcp.yaml + - product/antigravity-rules.md + - product/claude-rules.md + - product/cline-rules.md + - product/copilot-rules.md + - product/cursor-rules.md + - product/gemini-rules.md + - product/roo-rules.md + - product/trae-rules.md + - product/windsurf-rules.md + - product/index-strategy-tmpl.yaml + - product/market-research-tmpl.yaml + - product/migration-plan-tmpl.yaml + - product/migration-strategy-tmpl.md + - product/personalized-agent-template.md + - product/personalized-checklist-template.md + - product/personalized-task-template-v2.md + - product/personalized-task-template.md + - product/personalized-template-file.yaml + - product/personalized-workflow-template.yaml + - product/prd-tmpl.yaml + - product/project-brief-tmpl.yaml + - product/qa-gate-tmpl.yaml + - product/rls-policies-tmpl.yaml + - product/schema-design-tmpl.yaml + - product/state-persistence-tmpl.yaml + - product/story-tmpl.yaml + - product/task-execution-report.md + - product/task-template.md + - product/tokens-schema-tmpl.yaml + - product/workflow-template.yaml + - infrastructure/README.md + - infrastructure/README.md + - infrastructure/README.md + - infrastructure/core-config-brownfield.tmpl.yaml + - infrastructure/core-config-greenfield.tmpl.yaml + - infrastructure/README.md + - infrastructure/coding-standards-tmpl.md + - infrastructure/source-tree-tmpl.md + - infrastructure/tech-stack-tmpl.md + - infrastructure/regression-suite-v2.md + - infrastructure/README.md + - infrastructure/github-cli.yaml + - infrastructure/llm-routing.yaml + - infrastructure/railway-cli.yaml + - infrastructure/supabase-cli.yaml + - infrastructure/ffmpeg.yaml + - infrastructure/21st-dev-magic.yaml + - infrastructure/browser.yaml + - infrastructure/clickup.yaml + - infrastructure/context7.yaml + - infrastructure/desktop-commander.yaml + - infrastructure/exa.yaml + - infrastructure/google-workspace.yaml + - infrastructure/n8n.yaml + - infrastructure/supabase.yaml + - data/agent-config-requirements.yaml + - data/aios-kb.md + - data/learned-patterns.yaml + - data/technical-preferences.md + - data/workflow-patterns.yaml + - docs/AGENT-PERSONALIZATION-STANDARD-V1.md + - docs/AIOS-COLOR-PALETTE-QUICK-REFERENCE.md + - docs/AIOS-COLOR-PALETTE-V2.1.md + - docs/AIOS-LIVRO-DE-OURO-V2.1-COMPLETE.md + - docs/AIOS-LIVRO-DE-OURO-V2.2-SUMMARY.md + - docs/EXECUTOR-DECISION-TREE.md + - docs/OPEN-SOURCE-VS-SERVICE-DIFFERENCES.md + - docs/QUALITY-GATES-SPECIFICATION.md + - docs/STANDARDS-INDEX.md + - docs/STORY-TEMPLATE-V2-SPECIFICATION.md + - docs/TASK-FORMAT-SPECIFICATION-V1.md + - scripts/README.md + - scripts/aios-doc-template.md + - scripts/workflow-management.md + - core-config.yaml + - user-guide.md + - working-in-the-brownfield.md diff --git a/.antigravity/rules/agents/devops.md b/.antigravity/rules/agents/devops.md index d7b740307a..3db6ac542c 100644 --- a/.antigravity/rules/agents/devops.md +++ b/.antigravity/rules/agents/devops.md @@ -24,6 +24,11 @@ - `*remove-mcp` - Remove MCP server from Docker MCP Toolkit - `*setup-mcp-docker` - Initial Docker MCP Toolkit configuration [Story 5.11] - `*check-docs` - Verify documentation links integrity (broken, incorrect markings) +- `*create-worktree` - Create isolated worktree for story development +- `*list-worktrees` - List all active worktrees with status +- `*remove-worktree` - Remove worktree (with safety checks) +- `*cleanup-worktrees` - Remove all stale worktrees (> 30 days) +- `*merge-worktree` - Merge worktree branch back to base - `*session-info` - Show current session details (agent history, commands) - `*guide` - Show comprehensive usage guide for this agent - `*exit` - Exit DevOps mode diff --git a/.cursor/rules/agents/devops.md b/.cursor/rules/agents/devops.md index d7b740307a..3db6ac542c 100644 --- a/.cursor/rules/agents/devops.md +++ b/.cursor/rules/agents/devops.md @@ -24,6 +24,11 @@ - `*remove-mcp` - Remove MCP server from Docker MCP Toolkit - `*setup-mcp-docker` - Initial Docker MCP Toolkit configuration [Story 5.11] - `*check-docs` - Verify documentation links integrity (broken, incorrect markings) +- `*create-worktree` - Create isolated worktree for story development +- `*list-worktrees` - List all active worktrees with status +- `*remove-worktree` - Remove worktree (with safety checks) +- `*cleanup-worktrees` - Remove all stale worktrees (> 30 days) +- `*merge-worktree` - Merge worktree branch back to base - `*session-info` - Show current session details (agent history, commands) - `*guide` - Show comprehensive usage guide for this agent - `*exit` - Exit DevOps mode From 295f297c4b51ffbde484d44ddd7463232904bc98 Mon Sep 17 00:00:00 2001 From: Alan Nicolas Date: Wed, 28 Jan 2026 23:29:39 -0300 Subject: [PATCH 04/37] chore(ide-sync): update agent definitions for V3 migration Co-Authored-By: Claude --- .aios-core/utils/format-duration.js | 95 +++ apps/dashboard/eslint.config.mjs | 10 - apps/dashboard/next.config.ts | 3 +- apps/dashboard/package-lock.json | 116 +-- apps/dashboard/package.json | 3 +- .../src/app/(dashboard)/kanban/page.tsx | 35 +- apps/dashboard/src/app/api/stories/route.ts | 330 +------- apps/dashboard/src/app/globals.css | 720 ++++-------------- apps/dashboard/src/app/layout.tsx | 5 +- apps/dashboard/src/app/page.tsx | 144 +--- .../src/components/kanban/KanbanBoard.tsx | 107 +-- .../src/components/kanban/KanbanColumn.tsx | 103 ++- .../components/kanban/SortableStoryCard.tsx | 5 +- .../src/components/layout/AppShell.tsx | 23 +- .../src/components/layout/Sidebar.tsx | 75 +- .../src/components/layout/StatusBar.tsx | 9 +- .../src/components/stories/StoryCard.tsx | 136 ++-- .../components/stories/StoryDetailModal.tsx | 172 ++--- .../dashboard/src/components/stories/index.ts | 2 - apps/dashboard/src/hooks/index.ts | 2 - apps/dashboard/src/hooks/use-stories.ts | 40 +- apps/dashboard/src/stores/index.ts | 2 - apps/dashboard/src/stores/story-store.ts | 55 +- apps/dashboard/src/types/index.ts | 143 +--- tests/unit/format-duration.test.js | 104 +++ 25 files changed, 766 insertions(+), 1673 deletions(-) create mode 100644 .aios-core/utils/format-duration.js create mode 100644 tests/unit/format-duration.test.js diff --git a/.aios-core/utils/format-duration.js b/.aios-core/utils/format-duration.js new file mode 100644 index 0000000000..d90bee3fce --- /dev/null +++ b/.aios-core/utils/format-duration.js @@ -0,0 +1,95 @@ +/** + * Format Duration Utility - Story TEST-1 + * + * Converts milliseconds to human-readable format. + * + * @module utils/format-duration + * @version 1.0.0 + */ + +/** + * Format milliseconds to human-readable duration + * + * @param {number} ms - Duration in milliseconds + * @returns {string} Human-readable duration (e.g., "2h 30m 45s") + * + * @example + * formatDuration(3661000) // "1h 1m 1s" + * formatDuration(45000) // "45s" + * formatDuration(0) // "0s" + */ +function formatDuration(ms) { + // Handle edge cases + if (typeof ms !== 'number' || isNaN(ms)) { + return '0s'; + } + + // Handle negative numbers + if (ms < 0) { + return '-' + formatDuration(Math.abs(ms)); + } + + // Handle zero + if (ms === 0) { + return '0s'; + } + + // Handle very large numbers (cap at 999 days) + const maxMs = 999 * 24 * 60 * 60 * 1000; + if (ms > maxMs) { + return '999d+'; + } + + const seconds = Math.floor(ms / 1000); + const minutes = Math.floor(seconds / 60); + const hours = Math.floor(minutes / 60); + const days = Math.floor(hours / 24); + + const parts = []; + + if (days > 0) { + parts.push(`${days}d`); + } + + if (hours % 24 > 0) { + parts.push(`${hours % 24}h`); + } + + if (minutes % 60 > 0) { + parts.push(`${minutes % 60}m`); + } + + if (seconds % 60 > 0 || parts.length === 0) { + parts.push(`${seconds % 60}s`); + } + + return parts.join(' '); +} + +/** + * Format milliseconds to short format + * + * @param {number} ms - Duration in milliseconds + * @returns {string} Short format (e.g., "2:30:45") + */ +function formatDurationShort(ms) { + if (typeof ms !== 'number' || isNaN(ms) || ms < 0) { + return '0:00'; + } + + const totalSeconds = Math.floor(ms / 1000); + const hours = Math.floor(totalSeconds / 3600); + const minutes = Math.floor((totalSeconds % 3600) / 60); + const seconds = totalSeconds % 60; + + if (hours > 0) { + return `${hours}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`; + } + + return `${minutes}:${seconds.toString().padStart(2, '0')}`; +} + +module.exports = { + formatDuration, + formatDurationShort, +}; diff --git a/apps/dashboard/eslint.config.mjs b/apps/dashboard/eslint.config.mjs index dfcb5cf902..05e726d1b4 100644 --- a/apps/dashboard/eslint.config.mjs +++ b/apps/dashboard/eslint.config.mjs @@ -1,20 +1,10 @@ import { defineConfig, globalIgnores } from "eslint/config"; -import globals from "globals"; import nextVitals from "eslint-config-next/core-web-vitals"; import nextTs from "eslint-config-next/typescript"; const eslintConfig = defineConfig([ ...nextVitals, ...nextTs, - // Add globals for browser and Node.js environments - { - languageOptions: { - globals: { - ...globals.browser, - ...globals.node, - }, - }, - }, // Override default ignores of eslint-config-next. globalIgnores([ // Default ignores of eslint-config-next: diff --git a/apps/dashboard/next.config.ts b/apps/dashboard/next.config.ts index 184c6ddf55..e9ffa3083a 100644 --- a/apps/dashboard/next.config.ts +++ b/apps/dashboard/next.config.ts @@ -1,8 +1,7 @@ import type { NextConfig } from "next"; const nextConfig: NextConfig = { - // Externalize native modules that can't be bundled - serverExternalPackages: ['chokidar'], + /* config options here */ }; export default nextConfig; diff --git a/apps/dashboard/package-lock.json b/apps/dashboard/package-lock.json index 42e8db982d..c30debac18 100644 --- a/apps/dashboard/package-lock.json +++ b/apps/dashboard/package-lock.json @@ -14,7 +14,6 @@ "@radix-ui/react-context-menu": "^2.2.16", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-slot": "^1.2.4", - "chokidar": "^3.6.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "gray-matter": "^4.0.3", @@ -2915,19 +2914,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -3186,18 +3172,6 @@ "baseline-browser-mapping": "dist/cli.js" } }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -3213,6 +3187,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -3352,42 +3327,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/class-variance-authority": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", @@ -4401,6 +4340,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -4463,20 +4403,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -4934,18 +4860,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/is-boolean-object": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", @@ -5063,6 +4977,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -5108,6 +5023,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -5146,6 +5062,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -6010,15 +5927,6 @@ "dev": true, "license": "MIT" }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -6260,6 +6168,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -6457,18 +6366,6 @@ } } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", @@ -7205,6 +7102,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json index 240685b3d3..abc93c4831 100644 --- a/apps/dashboard/package.json +++ b/apps/dashboard/package.json @@ -6,8 +6,7 @@ "dev": "next dev", "build": "next build", "start": "next start", - "lint": "eslint", - "typecheck": "tsc --noEmit" + "lint": "eslint" }, "dependencies": { "@dnd-kit/core": "^6.3.1", diff --git a/apps/dashboard/src/app/(dashboard)/kanban/page.tsx b/apps/dashboard/src/app/(dashboard)/kanban/page.tsx index 3f4d345a13..41241518f7 100644 --- a/apps/dashboard/src/app/(dashboard)/kanban/page.tsx +++ b/apps/dashboard/src/app/(dashboard)/kanban/page.tsx @@ -1,16 +1,41 @@ 'use client'; +import { useState, useCallback } from 'react'; import { KanbanBoard } from '@/components/kanban'; +import { StoryDetailModal } from '@/components/stories'; import { useStories } from '@/hooks/use-stories'; +import type { Story } from '@/types'; export default function KanbanPage() { const { isLoading, refresh } = useStories(); + const [selectedStory, setSelectedStory] = useState(null); + const [modalOpen, setModalOpen] = useState(false); + + const handleStoryClick = useCallback((story: Story) => { + setSelectedStory(story); + setModalOpen(true); + }, []); + + const handleAddStory = useCallback(() => { + // TODO: Open story creation wizard + console.log('Add new story'); + }, []); return ( - + <> + + + + ); } diff --git a/apps/dashboard/src/app/api/stories/route.ts b/apps/dashboard/src/app/api/stories/route.ts index 04536a74ba..fd0b552189 100644 --- a/apps/dashboard/src/app/api/stories/route.ts +++ b/apps/dashboard/src/app/api/stories/route.ts @@ -2,15 +2,7 @@ import { NextResponse } from 'next/server'; import { promises as fs } from 'fs'; import path from 'path'; import matter from 'gray-matter'; -import type { - Story, - StoryStatus, - StoryComplexity, - StoryPriority, - StoryCategory, - StoryType, - AgentId, -} from '@/types'; +import type { Story, StoryStatus, StoryComplexity, StoryPriority, StoryCategory, AgentId } from '@/types'; // Get the project root path function getProjectRoot(): string { @@ -23,105 +15,13 @@ function getProjectRoot(): string { // Valid values for type checking const VALID_STATUS: StoryStatus[] = [ - 'backlog', - 'in_progress', - 'ai_review', - 'human_review', - 'pr_created', - 'done', - 'error', + 'backlog', 'in_progress', 'ai_review', 'human_review', 'pr_created', 'done', 'error' ]; const VALID_COMPLEXITY: StoryComplexity[] = ['simple', 'standard', 'complex']; const VALID_PRIORITY: StoryPriority[] = ['low', 'medium', 'high', 'critical']; const VALID_CATEGORY: StoryCategory[] = ['feature', 'fix', 'refactor', 'docs']; const VALID_AGENTS: AgentId[] = ['dev', 'qa', 'architect', 'pm', 'po', 'analyst', 'devops']; -// Priority mapping from P0/P1/P2/P3 format to enum -const PRIORITY_MAP: Record = { - p0: 'critical', - p1: 'high', - p2: 'medium', - p3: 'low', -}; - -// Status mapping from document format to enum -const STATUS_MAP: Record = { - draft: 'backlog', - ready: 'backlog', - 'in progress': 'in_progress', - 'in-progress': 'in_progress', - review: 'ai_review', - 'ai review': 'ai_review', - 'ready for review': 'human_review', - 'human review': 'human_review', - 'pr created': 'pr_created', - 'pr ready': 'pr_created', - done: 'done', - complete: 'done', - completed: 'done', - implemented: 'done', - error: 'error', - blocked: 'error', -}; - -// Parse blockquote metadata format used in epic/story files -// Format: > **Field:** Value -function parseBlockquoteMetadata(content: string): Record { - const metadata: Record = {}; - - // Match blockquote lines with bold field names - // > **Priority:** P0 - Foundation - // > **Status:** Draft - const blockquoteRegex = /^>\s*\*\*([^*]+)\*\*:\s*(.+)$/gm; - let match; - - while ((match = blockquoteRegex.exec(content)) !== null) { - const field = match[1].trim().toLowerCase(); - const value = match[2].trim(); - metadata[field] = value; - } - - return metadata; -} - -// Extract priority from blockquote format (e.g., "P0 - Foundation" -> "critical") -function extractPriorityFromBlockquote(value: string): StoryPriority | undefined { - if (!value) return undefined; - - // Extract P0, P1, P2, P3 from strings like "P0 - Foundation", "P1 - Core" - const pMatch = value.match(/^(p[0-3])/i); - if (pMatch) { - return PRIORITY_MAP[pMatch[1].toLowerCase()]; - } - - // Also support direct priority names - const lowerValue = value.toLowerCase(); - if (VALID_PRIORITY.includes(lowerValue as StoryPriority)) { - return lowerValue as StoryPriority; - } - - return undefined; -} - -// Extract status from blockquote format -function extractStatusFromBlockquote(value: string): StoryStatus | undefined { - if (!value) return undefined; - - const lowerValue = value.toLowerCase().trim(); - - // Check direct mapping - if (STATUS_MAP[lowerValue]) { - return STATUS_MAP[lowerValue]; - } - - // Check if it's a valid status directly - if (VALID_STATUS.includes(lowerValue as StoryStatus)) { - return lowerValue as StoryStatus; - } - - return undefined; -} - // Parse frontmatter to Story object function parseStoryFromMarkdown( content: string, @@ -131,9 +31,6 @@ function parseStoryFromMarkdown( try { const { data, content: markdownContent } = matter(content); - // Parse blockquote metadata as fallback for fields not in frontmatter - const blockquoteMeta = parseBlockquoteMetadata(markdownContent); - // Extract title from first H1 or frontmatter let title = data.title; if (!title) { @@ -144,85 +41,44 @@ function parseStoryFromMarkdown( // Generate ID from filename or frontmatter const id = data.id || path.basename(filePath, '.md'); - // Detect type: epic vs story based on filename or frontmatter - const filename = path.basename(filePath).toLowerCase(); - let storyType: StoryType = 'story'; - if (data.type === 'epic' || data.type === 'story') { - storyType = data.type; - } else if (filename.startsWith('epic-') || filename.includes('-epic')) { - storyType = 'epic'; - } else if (title.toLowerCase().startsWith('epic')) { - storyType = 'epic'; - } - - // Parse status - frontmatter first, then blockquote fallback + // Parse status let status: StoryStatus = 'backlog'; if (data.status && VALID_STATUS.includes(data.status)) { status = data.status; - } else if (blockquoteMeta.status) { - const blockquoteStatus = extractStatusFromBlockquote(blockquoteMeta.status); - if (blockquoteStatus) { - status = blockquoteStatus; - } } - // Parse complexity - frontmatter first, then blockquote fallback + // Parse complexity let complexity: StoryComplexity | undefined; if (data.complexity && VALID_COMPLEXITY.includes(data.complexity)) { complexity = data.complexity; - } else if (blockquoteMeta.complexity) { - const lowerComplexity = blockquoteMeta.complexity.toLowerCase(); - if (VALID_COMPLEXITY.includes(lowerComplexity as StoryComplexity)) { - complexity = lowerComplexity as StoryComplexity; - } } - // Parse priority - frontmatter first, then blockquote fallback + // Parse priority let priority: StoryPriority | undefined; if (data.priority && VALID_PRIORITY.includes(data.priority)) { priority = data.priority; - } else if (blockquoteMeta.priority) { - priority = extractPriorityFromBlockquote(blockquoteMeta.priority); } - // Parse category - frontmatter first, then blockquote fallback + // Parse category let category: StoryCategory | undefined; if (data.category && VALID_CATEGORY.includes(data.category)) { category = data.category; - } else if (blockquoteMeta.category || blockquoteMeta.type) { - const catValue = (blockquoteMeta.category || blockquoteMeta.type || '').toLowerCase(); - if (VALID_CATEGORY.includes(catValue as StoryCategory)) { - category = catValue as StoryCategory; - } } - // Parse agent - frontmatter first, then blockquote fallback + // Parse agent let agentId: AgentId | undefined; if (data.agent && VALID_AGENTS.includes(data.agent)) { agentId = data.agent; - } else if (blockquoteMeta.agent || blockquoteMeta.owner) { - const agentValue = (blockquoteMeta.agent || blockquoteMeta.owner || '') - .toLowerCase() - .replace('@', ''); - if (VALID_AGENTS.includes(agentValue as AgentId)) { - agentId = agentValue as AgentId; - } } - // Extract description from frontmatter, Epic Goal section, or first paragraph + // Extract description from frontmatter or first paragraph let description = data.description; if (!description) { - // Try to get Epic Goal section first - const epicGoalMatch = markdownContent.match(/## Epic Goal\n\n([\s\S]*?)(?=\n---|\n##|$)/i); - if (epicGoalMatch) { - description = epicGoalMatch[1].trim().split('\n\n')[0].slice(0, 200); - } else { - // Fall back to first non-blockquote paragraph after title - const paragraphs = markdownContent - .split('\n\n') - .filter((p) => p.trim() && !p.startsWith('#') && !p.startsWith('>')); - description = paragraphs[0]?.trim().slice(0, 200) || ''; - } + // Try to get first paragraph after title + const paragraphs = markdownContent + .split('\n\n') + .filter((p) => p.trim() && !p.startsWith('#')); + description = paragraphs[0]?.trim().slice(0, 200) || ''; } // Parse acceptance criteria from markdown @@ -239,39 +95,17 @@ function parseStoryFromMarkdown( const techMatch = markdownContent.match(/## Technical Notes\n([\s\S]*?)(?=\n##|$)/i); const technicalNotes = techMatch ? techMatch[1].trim() : undefined; - // Extract epicId from frontmatter or filename pattern (epic-N-*) - let epicId = data.epicId || data.epic; - if (!epicId) { - const epicMatch = path.basename(filePath).match(/^epic-(\d+)/i); - if (epicMatch) { - epicId = `epic-${epicMatch[1]}`; - } - } - - // Calculate progress from acceptance criteria completion - let progress = typeof data.progress === 'number' ? data.progress : undefined; - if (progress === undefined && acceptanceCriteria.length > 0) { - // Count completed criteria from original markdown - const completedMatch = markdownContent.match(/- \[x\]/gi); - const totalMatch = markdownContent.match(/- \[[ x]\]/gi); - if (totalMatch && totalMatch.length > 0) { - const completed = completedMatch?.length || 0; - progress = Math.round((completed / totalMatch.length) * 100); - } - } - return { id, title, description, status, - type: storyType, - epicId, + epicId: data.epicId || data.epic, complexity, priority, category, agentId, - progress, + progress: typeof data.progress === 'number' ? data.progress : undefined, acceptanceCriteria, technicalNotes, filePath, @@ -297,7 +131,7 @@ async function findMarkdownFiles(dir: string): Promise { if (entry.isDirectory()) { // Skip hidden directories and node_modules if (!entry.name.startsWith('.') && entry.name !== 'node_modules') { - files.push(...(await findMarkdownFiles(fullPath))); + files.push(...await findMarkdownFiles(fullPath)); } } else if (entry.isFile() && entry.name.endsWith('.md')) { // Skip files that are clearly not stories @@ -322,7 +156,6 @@ function getMockStories(): Story[] { title: 'Implement User Authentication', description: 'Add JWT-based authentication with login/register flows', status: 'in_progress', - type: 'story', complexity: 'standard', priority: 'high', category: 'feature', @@ -336,9 +169,8 @@ function getMockStories(): Story[] { { id: 'mock-2', title: 'Fix Navigation Bug', - description: "Sidebar doesn't collapse properly on mobile", + description: 'Sidebar doesn\'t collapse properly on mobile', status: 'ai_review', - type: 'story', complexity: 'simple', priority: 'medium', category: 'fix', @@ -352,7 +184,6 @@ function getMockStories(): Story[] { title: 'Add Dark Mode Support', description: 'Implement system-aware dark mode toggle', status: 'backlog', - type: 'story', complexity: 'standard', priority: 'low', category: 'feature', @@ -365,7 +196,6 @@ function getMockStories(): Story[] { title: 'Refactor API Routes', description: 'Consolidate duplicate API logic into shared utilities', status: 'human_review', - type: 'story', complexity: 'complex', priority: 'medium', category: 'refactor', @@ -378,7 +208,6 @@ function getMockStories(): Story[] { title: 'Update Documentation', description: 'Add API reference documentation for new endpoints', status: 'done', - type: 'story', complexity: 'simple', priority: 'low', category: 'docs', @@ -389,76 +218,6 @@ function getMockStories(): Story[] { ]; } -// Generate story filename from title -function generateStoryFilename(title: string): string { - const slug = title - .toLowerCase() - .replace(/[^a-z0-9]+/g, '-') - .replace(/^-|-$/g, '') - .slice(0, 50); - const timestamp = Date.now(); - return `${slug}-${timestamp}.md`; -} - -// Generate frontmatter from story data -function generateStoryContent(data: CreateStoryRequest): string { - const frontmatter = [ - '---', - `title: "${data.title.replace(/"/g, '\\"')}"`, - `status: ${data.status || 'backlog'}`, - `type: ${data.type || 'story'}`, - ]; - - if (data.priority) frontmatter.push(`priority: ${data.priority}`); - if (data.complexity) frontmatter.push(`complexity: ${data.complexity}`); - if (data.category) frontmatter.push(`category: ${data.category}`); - if (data.agent) frontmatter.push(`agent: ${data.agent}`); - if (data.epicId) frontmatter.push(`epicId: "${data.epicId}"`); - - frontmatter.push(`createdAt: "${new Date().toISOString()}"`); - frontmatter.push('---'); - frontmatter.push(''); - frontmatter.push(`# ${data.title}`); - frontmatter.push(''); - - if (data.description) { - frontmatter.push(data.description); - frontmatter.push(''); - } - - if (data.acceptanceCriteria && data.acceptanceCriteria.length > 0) { - frontmatter.push('## Acceptance Criteria'); - frontmatter.push(''); - for (const criterion of data.acceptanceCriteria) { - frontmatter.push(`- [ ] ${criterion}`); - } - frontmatter.push(''); - } - - if (data.technicalNotes) { - frontmatter.push('## Technical Notes'); - frontmatter.push(''); - frontmatter.push(data.technicalNotes); - frontmatter.push(''); - } - - return frontmatter.join('\n'); -} - -interface CreateStoryRequest { - title: string; - description?: string; - status?: StoryStatus; - type?: StoryType; - priority?: StoryPriority; - complexity?: StoryComplexity; - category?: StoryCategory; - agent?: AgentId; - epicId?: string; - acceptanceCriteria?: string[]; - technicalNotes?: string; -} - export async function GET() { try { const projectRoot = getProjectRoot(); @@ -532,58 +291,3 @@ export async function GET() { ); } } - -export async function POST(request: Request) { - try { - const body = (await request.json()) as CreateStoryRequest; - - // Validate required fields - if (!body.title || body.title.trim().length === 0) { - return NextResponse.json({ error: 'Title is required' }, { status: 400 }); - } - - const projectRoot = getProjectRoot(); - const storiesDir = path.join(projectRoot, 'docs', 'stories'); - - // Ensure stories directory exists - try { - await fs.mkdir(storiesDir, { recursive: true }); - } catch (error) { - if ((error as NodeJS.ErrnoException).code !== 'EEXIST') { - throw error; - } - } - - // Generate filename and content - const filename = generateStoryFilename(body.title); - const filePath = path.join(storiesDir, filename); - const content = generateStoryContent(body); - - // Write file - await fs.writeFile(filePath, content, 'utf-8'); - - // Get file stats and parse back to Story object - const stats = await fs.stat(filePath); - const relativePath = path.relative(projectRoot, filePath); - const story = parseStoryFromMarkdown(content, relativePath, { - mtime: stats.mtime, - birthtime: stats.birthtime, - }); - - if (!story) { - return NextResponse.json({ error: 'Failed to create story' }, { status: 500 }); - } - - return NextResponse.json( - { - story, - filePath: relativePath, - message: 'Story created successfully', - }, - { status: 201 } - ); - } catch (error) { - console.error('Error creating story:', error); - return NextResponse.json({ error: 'Failed to create story' }, { status: 500 }); - } -} diff --git a/apps/dashboard/src/app/globals.css b/apps/dashboard/src/app/globals.css index 2da4e7e542..eb7ce63f47 100644 --- a/apps/dashboard/src/app/globals.css +++ b/apps/dashboard/src/app/globals.css @@ -3,199 +3,38 @@ @custom-variant dark (&:is(.dark *)); -/* ═══════════════════════════════════════════════════════════════════════════ - AIOS DASHBOARD - DESIGN TOKENS v2.0 - Consolidated token system for Tech Refined theme - ═══════════════════════════════════════════════════════════════════════════ */ - +/* AIOS Dashboard Design Tokens - PRD v1.4 */ :root { - /* ───────────────────────────────────────────────────────────────────────── - CORE TOKENS - Light mode (fallback) - ───────────────────────────────────────────────────────────────────────── */ - --background: #ffffff; - --foreground: #0a0a0f; - --card: #ffffff; - --card-hover: #f4f4f5; - --card-foreground: #0a0a0f; - --popover: #ffffff; - --popover-foreground: #0a0a0f; - --border: #e4e4e7; - --border-subtle: rgba(0, 0, 0, 0.06); - --border-medium: rgba(0, 0, 0, 0.12); - --primary: #C9B298; - --primary-foreground: #0a0a0a; - --secondary: #f4f4f5; - --secondary-foreground: #0a0a0f; - --muted: #f4f4f5; - --muted-foreground: #71717a; - --accent: rgba(201, 178, 152, 0.15); - --accent-foreground: #C9B298; - --destructive: #ef4444; - --input: rgba(0, 0, 0, 0.06); - --ring: rgba(201, 178, 152, 0.5); - - /* ───────────────────────────────────────────────────────────────────────── - SEMANTIC TOKENS - Status System - ───────────────────────────────────────────────────────────────────────── */ - --status-success: #4ADE80; - --status-success-bg: rgba(74, 222, 128, 0.1); - --status-success-border: rgba(74, 222, 128, 0.2); - --status-success-glow: rgba(74, 222, 128, 0.6); - - --status-warning: #FBBF24; - --status-warning-bg: rgba(251, 191, 36, 0.1); - --status-warning-border: rgba(251, 191, 36, 0.2); - --status-warning-glow: rgba(251, 191, 36, 0.5); - - --status-error: #F87171; - --status-error-bg: rgba(248, 113, 113, 0.1); - --status-error-border: rgba(248, 113, 113, 0.2); - --status-error-glow: rgba(248, 113, 113, 0.6); - - --status-info: #60A5FA; - --status-info-bg: rgba(96, 165, 250, 0.1); - --status-info-border: rgba(96, 165, 250, 0.2); - --status-info-glow: rgba(96, 165, 250, 0.5); - - --status-idle: #4A4A42; - --status-idle-bg: rgba(74, 74, 66, 0.1); - --status-idle-border: rgba(74, 74, 66, 0.2); - - /* ───────────────────────────────────────────────────────────────────────── - AGENT TOKENS - Color system for agents - ───────────────────────────────────────────────────────────────────────── */ + /* Core */ + --card: oklch(1 0 0); + --card-hover: #161620; + --border: oklch(0.922 0 0); + --primary: oklch(0.205 0 0); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + + /* Semantic */ + --success: #22c55e; + --warning: #eab308; + --error: #ef4444; + --info: #3b82f6; + + /* Agent Colors */ --agent-dev: #22c55e; - --agent-dev-bg: rgba(34, 197, 94, 0.15); - --agent-dev-border: rgba(34, 197, 94, 0.3); - --agent-qa: #eab308; - --agent-qa-bg: rgba(234, 179, 8, 0.15); - --agent-qa-border: rgba(234, 179, 8, 0.3); - --agent-architect: #8b5cf6; - --agent-architect-bg: rgba(139, 92, 246, 0.15); - --agent-architect-border: rgba(139, 92, 246, 0.3); - --agent-pm: #3b82f6; - --agent-pm-bg: rgba(59, 130, 246, 0.15); - --agent-pm-border: rgba(59, 130, 246, 0.3); - --agent-po: #f97316; - --agent-po-bg: rgba(249, 115, 22, 0.15); - --agent-po-border: rgba(249, 115, 22, 0.3); - --agent-analyst: #06b6d4; - --agent-analyst-bg: rgba(6, 182, 212, 0.15); - --agent-analyst-border: rgba(6, 182, 212, 0.3); - --agent-devops: #ec4899; - --agent-devops-bg: rgba(236, 72, 153, 0.15); - --agent-devops-border: rgba(236, 72, 153, 0.3); - - --agent-sm: #f472b6; - --agent-sm-bg: rgba(244, 114, 182, 0.15); - --agent-sm-border: rgba(244, 114, 182, 0.3); - - /* ───────────────────────────────────────────────────────────────────────── - GOLD ACCENT SYSTEM - ───────────────────────────────────────────────────────────────────────── */ - --accent-gold: #C9B298; - --accent-gold-light: #E4D8CA; - --accent-gold-dim: rgba(201, 178, 152, 0.25); - --accent-gold-bg: rgba(201, 178, 152, 0.08); - --accent-gold-bg-hover: rgba(201, 178, 152, 0.12); - --border-gold: rgba(201, 178, 152, 0.25); - --border-gold-strong: rgba(201, 178, 152, 0.5); - - /* ───────────────────────────────────────────────────────────────────────── - PRIORITY TOKENS - MoSCoW colors - ───────────────────────────────────────────────────────────────────────── */ - --priority-must: #F87171; - --priority-must-bg: rgba(248, 113, 113, 0.08); - --priority-must-border: rgba(248, 113, 113, 0.2); - - --priority-should: #FBBF24; - --priority-should-bg: rgba(251, 191, 36, 0.08); - --priority-should-border: rgba(251, 191, 36, 0.2); - - --priority-could: #60A5FA; - --priority-could-bg: rgba(96, 165, 250, 0.08); - --priority-could-border: rgba(96, 165, 250, 0.2); - - --priority-wont: #4A4A42; - --priority-wont-bg: rgba(255, 255, 255, 0.02); - --priority-wont-border: rgba(255, 255, 255, 0.04); - - /* ───────────────────────────────────────────────────────────────────────── - COMPLEXITY TOKENS - ───────────────────────────────────────────────────────────────────────── */ - --complexity-simple: #4ADE80; - --complexity-simple-bg: rgba(74, 222, 128, 0.08); - --complexity-simple-border: rgba(74, 222, 128, 0.15); - - --complexity-standard: #FBBF24; - --complexity-standard-bg: rgba(251, 191, 36, 0.08); - --complexity-standard-border: rgba(251, 191, 36, 0.15); - - --complexity-complex: #F87171; - --complexity-complex-bg: rgba(248, 113, 113, 0.08); - --complexity-complex-border: rgba(248, 113, 113, 0.15); - - /* ───────────────────────────────────────────────────────────────────────── - CATEGORY TOKENS - ───────────────────────────────────────────────────────────────────────── */ - --category-feature: #60A5FA; - --category-feature-bg: rgba(96, 165, 250, 0.08); - - --category-fix: #FB923C; - --category-fix-bg: rgba(251, 146, 60, 0.08); - --category-refactor: #A78BFA; - --category-refactor-bg: rgba(167, 139, 250, 0.08); + /* Radius Scale */ + --radius-sm: 4px; + --radius-md: 8px; + --radius-lg: 12px; + --radius-xl: 16px; - --category-docs: #6B6B5F; - --category-docs-bg: rgba(255, 255, 255, 0.04); - - /* ───────────────────────────────────────────────────────────────────────── - PHASE TOKENS - Development phases - ───────────────────────────────────────────────────────────────────────── */ - --phase-planning: #A78BFA; - --phase-coding: #4ADE80; - --phase-testing: #FBBF24; - --phase-reviewing: #60A5FA; - --phase-deploying: #F472B6; - - /* AI Review phase - purple */ - --phase-review: #A78BFA; - --phase-review-bg: rgba(167, 139, 250, 0.1); - --phase-review-border: rgba(167, 139, 250, 0.2); - - /* PR Created phase - cyan */ - --phase-pr: #22D3EE; - --phase-pr-bg: rgba(34, 211, 238, 0.1); - --phase-pr-border: rgba(34, 211, 238, 0.2); - - /* ───────────────────────────────────────────────────────────────────────── - RADIUS SCALE - Sharp edges - ───────────────────────────────────────────────────────────────────────── */ - --radius: 0.25rem; - --radius-sm: 2px; - --radius-md: 4px; - --radius-lg: 6px; - --radius-xl: 8px; - - /* ───────────────────────────────────────────────────────────────────────── - ANIMATION TOKENS - ───────────────────────────────────────────────────────────────────────── */ - --ease-luxury: cubic-bezier(0.22, 1, 0.36, 1); - --ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55); - --duration-fast: 150ms; - --duration-normal: 300ms; - --duration-slow: 500ms; - - /* ───────────────────────────────────────────────────────────────────────── - SPACING SCALE - ───────────────────────────────────────────────────────────────────────── */ + /* Spacing Scale */ --space-1: 4px; --space-2: 8px; --space-3: 12px; @@ -203,210 +42,148 @@ --space-6: 24px; --space-8: 32px; - /* ───────────────────────────────────────────────────────────────────────── - LAYOUT TOKENS - ───────────────────────────────────────────────────────────────────────── */ - --sidebar-width: 240px; - --sidebar-collapsed-width: 64px; - --status-bar-height: 32px; - --tabs-height: 40px; - - /* ───────────────────────────────────────────────────────────────────────── - FOCUS TOKENS - ───────────────────────────────────────────────────────────────────────── */ - --ring-color: rgba(201, 178, 152, 0.5); + /* Focus */ + --ring-color: rgba(59, 130, 246, 0.5); --ring-width: 2px; - /* Chart colors */ - --chart-1: #60A5FA; - --chart-2: #34D399; - --chart-3: #FBBF24; - --chart-4: #A78BFA; - --chart-5: #F87171; - /* Sidebar */ - --sidebar: #fafafa; - --sidebar-foreground: #0a0a0f; - --sidebar-primary: #C9B298; - --sidebar-primary-foreground: #0a0a0a; - --sidebar-accent: rgba(201, 178, 152, 0.1); - --sidebar-accent-foreground: #0a0a0f; - --sidebar-border: #e4e4e7; - --sidebar-ring: rgba(201, 178, 152, 0.5); -} - -/* ═══════════════════════════════════════════════════════════════════════════ - TECH REFINED - Dark Theme (Default) - Elegant, minimalist, premium dark experience - ═══════════════════════════════════════════════════════════════════════════ */ -.dark { - /* ───────────────────────────────────────────────────────────────────────── - BACKGROUND SCALE - Pure black depth - ───────────────────────────────────────────────────────────────────────── */ - --bg-base: #000000; - --bg-elevated: #050505; - --bg-surface: #0a0a0a; - --bg-surface-hover: #0f0f0f; - --bg-overlay: #111111; - --bg-hover: rgba(255, 255, 255, 0.02); - - /* Core overrides */ - --background: var(--bg-base); - --foreground: #FAFAF8; - --card: var(--bg-surface); - --card-hover: var(--bg-surface-hover); - --card-foreground: #FAFAF8; - --popover: var(--bg-surface); - --popover-foreground: #FAFAF8; - - /* ───────────────────────────────────────────────────────────────────────── - BORDER SCALE - Subtle whites - ───────────────────────────────────────────────────────────────────────── */ - --border: rgba(255, 255, 255, 0.06); - --border-subtle: rgba(255, 255, 255, 0.04); - --border-medium: rgba(255, 255, 255, 0.10); - --border-strong: rgba(255, 255, 255, 0.15); - - /* ───────────────────────────────────────────────────────────────────────── - TEXT HIERARCHY (WCAG AA compliant - 4.5:1 min contrast) - ───────────────────────────────────────────────────────────────────────── */ - --text-primary: #FAFAF8; /* 19.5:1 on #0a0a0a */ - --text-secondary: #B8B8AC; /* 8.2:1 on #0a0a0a - improved from #A8A89C */ - --text-tertiary: #8A8A7F; /* 4.8:1 on #0a0a0a - improved from #6B6B5F */ - --text-muted: #6A6A5E; /* 3.2:1 on #0a0a0a - decorative only */ - --text-disabled: #3A3A32; /* 1.8:1 on #0a0a0a - disabled state */ - - /* Primary - Gold accent */ - --primary: #C9B298; - --primary-foreground: var(--bg-surface); - - /* Secondary */ - --secondary: #141414; - --secondary-foreground: var(--text-secondary); - - /* Muted */ - --muted: #141414; - --muted-foreground: var(--text-tertiary); - - /* Accent - Gold system */ - --accent: var(--accent-gold-bg); - --accent-foreground: var(--accent-gold); + --sidebar-width: 240px; + --sidebar-collapsed-width: 64px; - /* Destructive */ - --destructive: var(--status-error); - --input: var(--border); - --ring: var(--border-gold-strong); + /* Status Bar */ + --status-bar-height: 32px; - /* Sidebar - Deeper black */ - --sidebar: var(--bg-elevated); - --sidebar-foreground: var(--text-secondary); - --sidebar-primary: var(--accent-gold); - --sidebar-primary-foreground: var(--bg-surface); - --sidebar-accent: var(--accent-gold-bg); - --sidebar-accent-foreground: var(--text-primary); - --sidebar-border: var(--border-subtle); - --sidebar-ring: var(--border-gold-strong); + /* Tabs */ + --tabs-height: 40px; + --radius: 0.625rem; + --background: oklch(1 0 0); + --foreground: oklch(0.145 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.97 0 0); + --secondary-foreground: oklch(0.205 0 0); + --accent: oklch(0.97 0 0); + --accent-foreground: oklch(0.205 0 0); + --destructive: oklch(0.577 0.245 27.325); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.205 0 0); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); } -/* ═══════════════════════════════════════════════════════════════════════════ - TAILWIND THEME MAPPING - ═══════════════════════════════════════════════════════════════════════════ */ @theme inline { - /* Colors */ --color-background: var(--background); --color-foreground: var(--foreground); --color-card: var(--card); --color-card-hover: var(--card-hover); - --color-card-foreground: var(--card-foreground); - --color-popover: var(--popover); - --color-popover-foreground: var(--popover-foreground); --color-border: var(--border); - --color-border-subtle: var(--border-subtle); - --color-border-medium: var(--border-medium); --color-primary: var(--primary); - --color-primary-foreground: var(--primary-foreground); - --color-secondary: var(--secondary); - --color-secondary-foreground: var(--secondary-foreground); --color-muted: var(--muted); --color-muted-foreground: var(--muted-foreground); - --color-accent: var(--accent); - --color-accent-foreground: var(--accent-foreground); - --color-destructive: var(--destructive); - --color-input: var(--input); - --color-ring: var(--ring); - - /* Text colors */ - --color-text-primary: var(--text-primary); - --color-text-secondary: var(--text-secondary); - --color-text-tertiary: var(--text-tertiary); - --color-text-muted: var(--text-muted); - --color-text-disabled: var(--text-disabled); - - /* Gold accent */ - --color-gold: var(--accent-gold); - --color-gold-light: var(--accent-gold-light); - --color-gold-dim: var(--accent-gold-dim); - - /* Status colors */ - --color-status-success: var(--status-success); - --color-status-warning: var(--status-warning); - --color-status-error: var(--status-error); - --color-status-info: var(--status-info); - --color-status-idle: var(--status-idle); - - /* Background scale */ - --color-bg-base: var(--bg-base); - --color-bg-elevated: var(--bg-elevated); - --color-bg-surface: var(--bg-surface); - --color-bg-surface-hover: var(--bg-surface-hover); - - /* Charts */ - --color-chart-1: var(--chart-1); - --color-chart-2: var(--chart-2); - --color-chart-3: var(--chart-3); - --color-chart-4: var(--chart-4); - --color-chart-5: var(--chart-5); - - /* Sidebar */ - --color-sidebar: var(--sidebar); - --color-sidebar-foreground: var(--sidebar-foreground); - --color-sidebar-primary: var(--sidebar-primary); - --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); - --color-sidebar-accent: var(--sidebar-accent); - --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); - --color-sidebar-border: var(--sidebar-border); - --color-sidebar-ring: var(--sidebar-ring); - - /* Radius */ - --radius-sm: var(--radius-sm); - --radius-md: var(--radius-md); - --radius-lg: var(--radius-lg); - --radius-xl: var(--radius-xl); - - /* Fonts */ + --color-success: var(--success); + --color-warning: var(--warning); + --color-error: var(--error); + --color-info: var(--info); --font-sans: var(--font-geist-sans); --font-mono: var(--font-geist-mono); + --color-sidebar-ring: var(--sidebar-ring); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar: var(--sidebar); + --color-chart-5: var(--chart-5); + --color-chart-4: var(--chart-4); + --color-chart-3: var(--chart-3); + --color-chart-2: var(--chart-2); + --color-chart-1: var(--chart-1); + --color-ring: var(--ring); + --color-input: var(--input); + --color-destructive: var(--destructive); + --color-accent-foreground: var(--accent-foreground); + --color-accent: var(--accent); + --color-secondary-foreground: var(--secondary-foreground); + --color-secondary: var(--secondary); + --color-primary-foreground: var(--primary-foreground); + --color-popover-foreground: var(--popover-foreground); + --color-popover: var(--popover); + --color-card-foreground: var(--card-foreground); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --radius-2xl: calc(var(--radius) + 8px); + --radius-3xl: calc(var(--radius) + 12px); + --radius-4xl: calc(var(--radius) + 16px); +} + +/* Dark mode is default - light mode optional */ +@media (prefers-color-scheme: light) { + :root { + --background: #fafafa; + --foreground: #0a0a0f; + --card: #ffffff; + --card-hover: #f4f4f5; + --border: #e4e4e7; + } } -/* ═══════════════════════════════════════════════════════════════════════════ - BASE STYLES - ═══════════════════════════════════════════════════════════════════════════ */ -body { - font-family: var(--font-sans), system-ui, sans-serif; +/* Force dark mode class */ +.dark { + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.205 0 0); + --card-hover: #161620; + --border: oklch(1 0 0 / 10%); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.205 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.922 0 0); + --primary-foreground: oklch(0.205 0 0); + --secondary: oklch(0.269 0 0); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.269 0 0); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.704 0.191 22.216); + --input: oklch(1 0 0 / 15%); + --ring: oklch(0.556 0 0); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(1 0 0 / 10%); + --sidebar-ring: oklch(0.556 0 0); } -@layer base { - * { - @apply border-border outline-ring/50; - } - body { - @apply bg-background text-foreground; - } +body { + font-family: var(--font-sans), system-ui, sans-serif; } -/* ═══════════════════════════════════════════════════════════════════════════ - SCROLLBAR STYLES - ═══════════════════════════════════════════════════════════════════════════ */ +/* Scrollbar styling */ ::-webkit-scrollbar { width: 8px; height: 8px; @@ -422,32 +199,10 @@ body { } ::-webkit-scrollbar-thumb:hover { - background: var(--border-medium); -} - -.scrollbar-refined::-webkit-scrollbar { - width: 6px; - height: 6px; -} - -.scrollbar-refined::-webkit-scrollbar-track { - background: transparent; + background: var(--muted); } -.scrollbar-refined::-webkit-scrollbar-thumb { - background: var(--border); - border-radius: 3px; -} - -.scrollbar-refined::-webkit-scrollbar-thumb:hover { - background: var(--border-medium); -} - -/* ═══════════════════════════════════════════════════════════════════════════ - UTILITY CLASSES - Tech Refined - ═══════════════════════════════════════════════════════════════════════════ */ - -/* Focus ring */ +/* Focus ring utility */ .focus-ring { outline: none; } @@ -456,192 +211,11 @@ body { box-shadow: 0 0 0 var(--ring-width) var(--ring-color); } -/* Hover lift effect */ -.hover-lift { - transition: transform var(--duration-normal) var(--ease-luxury), - box-shadow var(--duration-normal) var(--ease-luxury), - border-color var(--duration-normal) var(--ease-luxury); -} - -.hover-lift:hover { - transform: translateY(-2px); - box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4); -} - -/* Card refined */ -.card-refined { - background: var(--card); - border: 1px solid var(--border); - transition: all var(--duration-normal) var(--ease-luxury); -} - -.card-refined:hover { - background: var(--card-hover); - border-color: var(--border-medium); - transform: translateY(-1px); -} - -/* Gold accent utilities */ -.hover-gold:hover { - border-color: var(--border-gold); -} - -.hover-gold-strong:hover { - border-color: var(--border-gold-strong); - box-shadow: 0 0 20px rgba(201, 178, 152, 0.1); -} - -.active-gold { - border-color: var(--border-gold) !important; - background: var(--accent-gold-bg) !important; -} - -/* Gold gradient line */ -.gold-line { - height: 1px; - background: linear-gradient( - 90deg, - transparent 0%, - var(--accent-gold-dim) 20%, - var(--border-gold-strong) 50%, - var(--accent-gold-dim) 80%, - transparent 100% - ); -} - -/* Glow backgrounds */ -.bg-glow-gold { - background: radial-gradient( - ellipse 80% 50% at 50% 0%, - rgba(201, 178, 152, 0.03), - transparent - ); -} - -/* Text gradient - gold shimmer */ -.text-gold-gradient { - background: linear-gradient(135deg, var(--accent-gold) 0%, var(--accent-gold-light) 50%, var(--accent-gold) 100%); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - background-clip: text; -} - -/* Section label */ -.section-label { - font-size: 10px; - font-weight: 500; - text-transform: uppercase; - letter-spacing: 0.2em; - color: var(--accent-gold); -} - -/* Status dot with glow */ -.status-dot { - width: 6px; - height: 6px; - border-radius: 50%; -} - -.status-dot-glow { - box-shadow: 0 0 8px currentColor; -} - -/* Transition utilities */ -.transition-luxury { - transition: all var(--duration-normal) var(--ease-luxury); -} - -.transition-fast { - transition: all var(--duration-fast) var(--ease-luxury); -} - -/* Border utilities */ -.border-subtle { - border-color: var(--border-subtle); -} - -.border-medium { - border-color: var(--border-medium); -} - -/* Skeleton animation */ -@keyframes skeleton-pulse { - 0%, 100% { opacity: 0.4; } - 50% { opacity: 0.7; } -} - -.skeleton { - animation: skeleton-pulse 1.5s var(--ease-luxury) infinite; - background: var(--border); -} - -/* ═══════════════════════════════════════════════════════════════════════════ - ACCESSIBILITY - Focus Styles - ═══════════════════════════════════════════════════════════════════════════ */ - -/* Enhanced focus visible for all interactive elements */ -button:focus-visible, -a:focus-visible, -input:focus-visible, -select:focus-visible, -textarea:focus-visible, -[role="button"]:focus-visible, -[tabindex]:focus-visible { - outline: 2px solid var(--accent-gold); - outline-offset: 2px; -} - -/* Remove default outline */ -button:focus, -a:focus, -input:focus, -select:focus, -textarea:focus { - outline: none; -} - -/* Skip link for keyboard navigation */ -.skip-link { - position: absolute; - top: -40px; - left: 0; - background: var(--accent-gold); - color: var(--bg-surface); - padding: 8px 16px; - z-index: 100; - text-decoration: none; - font-weight: 500; -} - -.skip-link:focus { - top: 0; -} - -/* Screen reader only utility */ -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border: 0; -} - -/* Reduced motion preference */ -@media (prefers-reduced-motion: reduce) { - *, - *::before, - *::after { - animation-duration: 0.01ms !important; - animation-iteration-count: 1 !important; - transition-duration: 0.01ms !important; - scroll-behavior: auto !important; +@layer base { + * { + @apply border-border outline-ring/50; } - - .hover-lift:hover { - transform: none; + body { + @apply bg-background text-foreground; } } diff --git a/apps/dashboard/src/app/layout.tsx b/apps/dashboard/src/app/layout.tsx index 92a7653e91..f36a93e713 100644 --- a/apps/dashboard/src/app/layout.tsx +++ b/apps/dashboard/src/app/layout.tsx @@ -1,7 +1,7 @@ import type { Metadata } from "next"; import { Geist, Geist_Mono } from "next/font/google"; +import { AppShell } from "@/components/layout"; import "./globals.css"; -import { AppShell } from "@/components/layout/AppShell"; const geistSans = Geist({ variable: "--font-geist-sans", @@ -24,10 +24,9 @@ export default function RootLayout({ children: React.ReactNode; }>) { return ( - + {children} diff --git a/apps/dashboard/src/app/page.tsx b/apps/dashboard/src/app/page.tsx index 0c9356da68..33a35475ad 100644 --- a/apps/dashboard/src/app/page.tsx +++ b/apps/dashboard/src/app/page.tsx @@ -1,120 +1,52 @@ 'use client'; -import { useState, useCallback } from 'react'; import { useUIStore } from '@/stores/ui-store'; -import { KanbanBoard } from '@/components/kanban'; -import { StoryDetailModal } from '@/components/stories'; -import { AgentMonitor } from '@/components/agents'; -import { SettingsPanel } from '@/components/settings'; -import { TerminalGrid } from '@/components/terminals'; -import { GitHubPanel } from '@/components/github'; -import { RoadmapView } from '@/components/roadmap'; -import { InsightsPanel } from '@/components/insights'; -import { ContextPanel } from '@/components/context'; -import { FAB, HelpFAB } from '@/components/ui/fab'; -import { useStories } from '@/hooks/use-stories'; -import type { Story, SidebarView } from '@/types'; +import { SIDEBAR_ITEMS } from '@/types'; export default function Home() { const { activeView } = useUIStore(); - const { isLoading, refresh } = useStories(); - const [selectedStory, setSelectedStory] = useState(null); - const [modalOpen, setModalOpen] = useState(false); - - const handleStoryClick = useCallback((story: Story) => { - setSelectedStory(story); - setModalOpen(true); - }, []); - - const handleNewStory = useCallback(() => { - // TODO: Open new story modal - console.log('Create new story'); - }, []); - - // Show FAB on views that support creation - const showFAB = activeView === 'kanban' || activeView === 'roadmap'; + const currentItem = SIDEBAR_ITEMS.find((item) => item.id === activeView); return ( -
- - - +
+ {/* View Header */} +
+

+ {currentItem?.icon} + {currentItem?.label} +

+

+ {getViewDescription(activeView)} +

+
- {/* Floating Action Buttons */} - {showFAB && ( - - )} - + {/* Placeholder Content */} +
+
+ {currentItem?.icon} +

+ {currentItem?.label} View +

+

+ Content coming in Epic 1+ +

+
+
); } -interface ViewContentProps { - view: SidebarView; - onStoryClick: (story: Story) => void; - onRefresh: () => void; - isLoading: boolean; -} - -function ViewContent({ view, onStoryClick, onRefresh, isLoading }: ViewContentProps) { - switch (view) { - case 'kanban': - return ( - - ); - - case 'agents': - return ; - - case 'settings': - return ; - - case 'terminals': - return ; - - case 'roadmap': - return ; - - case 'github': - return ; - - case 'insights': - return ; - - case 'context': - return ; - - default: - return ; - } -} - -function PlaceholderView({ title, description }: { title: string; description: string }) { - return ( -
-
-

{title}

-

{description}

-
-
- ); +function getViewDescription(view: string): string { + const descriptions: Record = { + kanban: 'Story board with 7 columns for tracking development progress', + terminals: 'Output from AIOS agents and command execution', + roadmap: 'Timeline of epics and milestones', + context: 'Context files and documentation', + ideas: 'Backlog of ideas and feature requests', + insights: 'Metrics, analytics and performance data', + github: 'Issues, PRs and repository activity', + worktrees: 'Git worktrees management', + tools: 'Settings and configuration', + }; + return descriptions[view] || ''; } diff --git a/apps/dashboard/src/components/kanban/KanbanBoard.tsx b/apps/dashboard/src/components/kanban/KanbanBoard.tsx index d4bad243ab..2bd32117c9 100644 --- a/apps/dashboard/src/components/kanban/KanbanBoard.tsx +++ b/apps/dashboard/src/components/kanban/KanbanBoard.tsx @@ -18,11 +18,12 @@ import { Plus, RefreshCw } from 'lucide-react'; import { cn } from '@/lib/utils'; import { useStoryStore } from '@/stores/story-store'; import { KANBAN_COLUMNS, type Story, type StoryStatus } from '@/types'; -import { StoryCard, StoryCreateModal, StoryEditModal } from '@/components/stories'; +import { StoryCard } from '@/components/stories'; import { KanbanColumn } from './KanbanColumn'; interface KanbanBoardProps { onStoryClick?: (story: Story) => void; + onAddStory?: () => void; onRefresh?: () => void; isLoading?: boolean; className?: string; @@ -30,11 +31,12 @@ interface KanbanBoardProps { export function KanbanBoard({ onStoryClick, + onAddStory, onRefresh, isLoading = false, className, }: KanbanBoardProps) { - const { getStoriesByStatus, moveStory, reorderInColumn, getStoryById, addStory, updateStory, deleteStory } = + const { getStoriesByStatus, moveStory, reorderInColumn, getStoryById } = useStoryStore(); const [activeStory, setActiveStory] = useState(null); @@ -42,12 +44,6 @@ export function KanbanBoard({ new Set() ); - // Modal states - const [showCreateModal, setShowCreateModal] = useState(false); - const [createModalStatus, setCreateModalStatus] = useState('backlog'); - const [showEditModal, setShowEditModal] = useState(false); - const [editingStory, setEditingStory] = useState(null); - // DnD sensors const sensors = useSensors( useSensor(PointerSensor, { @@ -73,45 +69,6 @@ export function KanbanBoard({ }); }, []); - // Open create modal with optional default status - const handleOpenCreateModal = useCallback((status: StoryStatus = 'backlog') => { - setCreateModalStatus(status); - setShowCreateModal(true); - }, []); - - // Handle story created - const handleStoryCreated = useCallback((story: Story) => { - addStory(story); - onRefresh?.(); - }, [addStory, onRefresh]); - - // Open edit modal - const handleOpenEditModal = useCallback((story: Story) => { - setEditingStory(story); - setShowEditModal(true); - }, []); - - // Handle story updated - const handleStoryUpdated = useCallback((story: Story) => { - updateStory(story.id, story); - onRefresh?.(); - }, [updateStory, onRefresh]); - - // Handle story deleted - const handleStoryDeleted = useCallback((storyId: string) => { - deleteStory(storyId); - onRefresh?.(); - }, [deleteStory, onRefresh]); - - // Handle story click - opens edit modal or calls onStoryClick - const handleStoryClick = useCallback((story: Story) => { - if (onStoryClick) { - onStoryClick(story); - } else { - handleOpenEditModal(story); - } - }, [onStoryClick, handleOpenEditModal]); - // Drag handlers const handleDragStart = useCallback( (event: DragStartEvent) => { @@ -155,13 +112,13 @@ export function KanbanBoard({ if (!overStory) return; targetStatus = overStory.status; - const targetStories = getStoriesByStatus(targetStatus, 'story'); + const targetStories = getStoriesByStatus(targetStatus); targetIndex = targetStories.findIndex((s) => s.id === overId); } // Same column reorder if (activeStory.status === targetStatus) { - const stories = getStoriesByStatus(targetStatus, 'story'); + const stories = getStoriesByStatus(targetStatus); const oldIndex = stories.findIndex((s) => s.id === activeId); if (oldIndex !== -1 && targetIndex !== undefined && oldIndex !== targetIndex) { reorderInColumn(targetStatus, oldIndex, targetIndex); @@ -199,25 +156,22 @@ export function KanbanBoard({ )} - {/* Add Story Button */} - + {/* Add Story Button (AC6) */} + {onAddStory && ( + + )}
- {/* Screen reader instructions for keyboard navigation */} -
- Press Space or Enter to pick up a story. Use arrow keys to move between columns. Press Space or Enter again to drop. -
- {/* Board */}
toggleColumnCollapse(column.id)} - onStoryClick={handleStoryClick} - onAddStory={() => handleOpenCreateModal(column.id)} + onStoryClick={onStoryClick} + onAddStory={column.id === 'backlog' ? onAddStory : undefined} /> ))}
@@ -251,23 +205,6 @@ export function KanbanBoard({ - - {/* Create Story Modal */} - - - {/* Edit Story Modal */} - ); } diff --git a/apps/dashboard/src/components/kanban/KanbanColumn.tsx b/apps/dashboard/src/components/kanban/KanbanColumn.tsx index dd93940361..b6bc4e90fa 100644 --- a/apps/dashboard/src/components/kanban/KanbanColumn.tsx +++ b/apps/dashboard/src/components/kanban/KanbanColumn.tsx @@ -7,19 +7,18 @@ import { } from '@dnd-kit/sortable'; import { ChevronDown, ChevronRight, Plus } from 'lucide-react'; import { cn } from '@/lib/utils'; -import { iconMap, type IconName } from '@/lib/icons'; import { KANBAN_COLUMNS, type Story, type StoryStatus } from '@/types'; import { SortableStoryCard } from './SortableStoryCard'; -// Column color styles - using CSS variables -const COLUMN_COLORS: Record = { - gray: { border: 'var(--status-idle)', text: 'var(--status-idle)', bg: 'var(--status-idle-bg)' }, - blue: { border: 'var(--status-info)', text: 'var(--status-info)', bg: 'var(--status-info-bg)' }, - purple: { border: 'var(--phase-review)', text: 'var(--phase-review)', bg: 'var(--phase-review-bg)' }, - yellow: { border: 'var(--status-warning)', text: 'var(--status-warning)', bg: 'var(--status-warning-bg)' }, - cyan: { border: 'var(--phase-pr)', text: 'var(--phase-pr)', bg: 'var(--phase-pr-bg)' }, - green: { border: 'var(--status-success)', text: 'var(--status-success)', bg: 'var(--status-success-bg)' }, - red: { border: 'var(--status-error)', text: 'var(--status-error)', bg: 'var(--status-error-bg)' }, +// Column color styles +const COLUMN_COLORS: Record = { + gray: 'border-t-gray-500', + blue: 'border-t-blue-500', + purple: 'border-t-purple-500', + yellow: 'border-t-yellow-500', + cyan: 'border-t-cyan-500', + green: 'border-t-green-500', + red: 'border-t-red-500', }; interface KanbanColumnProps { @@ -46,66 +45,51 @@ export function KanbanColumn({ const column = KANBAN_COLUMNS.find((c) => c.id === status); if (!column) return null; - const colorStyle = COLUMN_COLORS[column.color] || COLUMN_COLORS.gray; - return (
{/* Column Header */} -
+
- {/* Collapse Toggle */} + {/* Collapse Toggle (AC7) */} {/* Icon & Label */} - {(() => { - const IconComponent = iconMap[column.icon]; - return IconComponent ? ( - - ) : null; - })()} - {column.label} + {column.icon} + {column.label} - {/* Count Badge */} - + {/* Count Badge (AC3) */} + {stories.length}
- {/* Add Button */} - {onAddStory && ( + {/* Add Button (only for backlog) */} + {status === 'backlog' && onAddStory && ( )}
@@ -114,7 +98,7 @@ export function KanbanColumn({ {!isCollapsed && (
s.id)} @@ -139,25 +123,24 @@ export function KanbanColumn({ ); } -// Empty state component with professional icons +// Empty state component function EmptyColumnState({ status }: { status: StoryStatus }) { - const messages: Record = { - backlog: { icon: 'file-text', text: 'No stories in backlog' }, - in_progress: { icon: 'play', text: 'No stories in progress' }, - ai_review: { icon: 'bot', text: 'No stories for AI review' }, - human_review: { icon: 'user', text: 'No stories for review' }, - pr_created: { icon: 'git-pull-request', text: 'No PRs pending' }, - done: { icon: 'check-circle', text: 'No completed stories' }, - error: { icon: 'x-circle', text: 'No errors' }, + const messages: Record = { + backlog: { icon: '📋', text: 'No stories in backlog' }, + in_progress: { icon: '🚀', text: 'No stories in progress' }, + ai_review: { icon: '🤖', text: 'No stories for AI review' }, + human_review: { icon: '👤', text: 'No stories for review' }, + pr_created: { icon: '🔗', text: 'No PRs pending' }, + done: { icon: '✅', text: 'No completed stories' }, + error: { icon: '❌', text: 'No errors' }, }; const { icon, text } = messages[status]; - const IconComponent = iconMap[icon]; return ( -
- {IconComponent && } - {text} +
+ {icon} + {text}
); } diff --git a/apps/dashboard/src/components/kanban/SortableStoryCard.tsx b/apps/dashboard/src/components/kanban/SortableStoryCard.tsx index dbe45bc737..274e5b83a1 100644 --- a/apps/dashboard/src/components/kanban/SortableStoryCard.tsx +++ b/apps/dashboard/src/components/kanban/SortableStoryCard.tsx @@ -45,11 +45,8 @@ export function SortableStoryCard({ story, onClick }: SortableStoryCardProps) { style={style} {...attributes} {...listeners} - aria-label={`Story: ${story.title}. Status: ${story.status}. Press Space to drag.`} - aria-describedby="dnd-instructions" className={cn( - 'touch-none outline-none', - 'focus-visible:ring-2 focus-visible:ring-[var(--accent-gold)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--bg-surface)]', + 'touch-none', isDragging && 'opacity-50 scale-105 z-50' )} > diff --git a/apps/dashboard/src/components/layout/AppShell.tsx b/apps/dashboard/src/components/layout/AppShell.tsx index c9e69ce831..fe7e84cdb4 100644 --- a/apps/dashboard/src/components/layout/AppShell.tsx +++ b/apps/dashboard/src/components/layout/AppShell.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useEffect, useState } from 'react'; +import { useEffect } from 'react'; import { useUIStore } from '@/stores/ui-store'; import { useProjectsStore } from '@/stores/projects-store'; import { Sidebar } from './Sidebar'; @@ -13,9 +13,6 @@ interface AppShellProps { } export function AppShell({ children }: AppShellProps) { - // Prevent hydration mismatch from persisted stores - const [mounted, setMounted] = useState(false); - const { toggleSidebar } = useUIStore(); const { projects, @@ -28,11 +25,6 @@ export function AppShell({ children }: AppShellProps) { closeAllProjects, } = useProjectsStore(); - // Mark as mounted after first render - useEffect(() => { - setMounted(true); - }, []); - // Keyboard shortcut for sidebar toggle: `[` useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { @@ -74,19 +66,6 @@ export function AppShell({ children }: AppShellProps) { reorderProjects(oldIndex, newIndex); }; - // Show minimal shell during SSR to prevent hydration mismatch - if (!mounted) { - return ( -
-
-
-
-
-
-
- ); - } - return (
{/* Main container */} diff --git a/apps/dashboard/src/components/layout/Sidebar.tsx b/apps/dashboard/src/components/layout/Sidebar.tsx index 893581576b..b07e187fbe 100644 --- a/apps/dashboard/src/components/layout/Sidebar.tsx +++ b/apps/dashboard/src/components/layout/Sidebar.tsx @@ -3,7 +3,6 @@ import { useUIStore } from '@/stores/ui-store'; import { SIDEBAR_ITEMS } from '@/types'; import { cn } from '@/lib/utils'; -import { iconMap } from '@/lib/icons'; interface SidebarProps { className?: string; @@ -15,27 +14,23 @@ export function Sidebar({ className }: SidebarProps) { return (