aiwf 0.3.23 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +146 -0
- package/CHANGELOG.md +49 -1
- package/README.ko.md +118 -309
- package/README.md +68 -254
- package/docs/modernization/BROWNFIELD-GREENFIELD.ko.md +105 -0
- package/docs/modernization/CLAUDE-PLAN-REVIEW-2026-10-03.ko.md +77 -0
- package/docs/modernization/CLI-PRODUCTIVITY-REVIEWED-2026-10-03.ko.md +177 -0
- package/docs/modernization/CLI-PRODUCTIVITY.ko.md +193 -0
- package/docs/modernization/CORE-PACKAGE-PLAN.md +7 -0
- package/docs/modernization/DEEP-REVERSE-ENGINEERING.ko.md +88 -0
- package/docs/modernization/DELEGATION-OPTIONAL.ko.md +57 -0
- package/docs/modernization/DIRECTION.ko.md +56 -0
- package/docs/modernization/FULL-TEST-2026-10-03.md +49 -0
- package/docs/modernization/LEGACY-REMOVAL-PLAN.md +9 -0
- package/docs/modernization/PILOT-RESULT-2026-10-03.ko.md +85 -0
- package/docs/modernization/PILOT-UC-001.ko.md +79 -0
- package/docs/modernization/PLAN.md +28 -0
- package/docs/modernization/SKILLS.ko.md +105 -0
- package/docs/modernization/SPRINTABLE.ko.md +47 -0
- package/docs/modernization/SYNC-DOCS-VALIDATION-2026-10-04.ko.md +38 -0
- package/docs/modernization/VALIDATION.md +79 -0
- package/docs/modernization/evidence/example-review-packet.json +115 -0
- package/docs/modernization/evidence/example-spec-pin.json +48 -0
- package/docs/modernization/evidence/full-test-20261003/claude-lint.md +22 -0
- package/docs/modernization/evidence/full-test-20261003/claude-review-retry.md +56 -0
- package/docs/modernization/evidence/full-test-20261003/codex-review-packet.json +159 -0
- package/docs/modernization/evidence/full-test-20261003/src/expense.mjs +40 -0
- package/docs/modernization/evidence/full-test-20261003/summary.json +106 -0
- package/docs/modernization/evidence/full-test-20261003/tests/expense.test.mjs +61 -0
- package/docs/modernization/evidence/local-pilot-20261003/README.ko.md +40 -0
- package/docs/modernization/evidence/local-pilot-20261003/execution.json +1055 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/dependencies.json +24 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/dependencies.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/dependencies.stdout.txt +5 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/docs.json +24 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/docs.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/docs.stdout.txt +6 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/example.json +24 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/example.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/example.stdout.txt +5 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/local-docs.json +24 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/local-docs.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/local-docs.stdout.txt +6 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/node.json +23 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/node.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/node.stdout.txt +535 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/provenance.json +24 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/provenance.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/provenance.stdout.txt +5 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/readme-replay.json +24 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/readme-replay.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/readme-replay.stdout.txt +273 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/upstream.json +24 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/upstream.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/maintenance/upstream.stdout.txt +7 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/archive-service.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/archive-service.stdout.txt +148 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/archive-structure.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/archive-structure.stdout.txt +9 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-check.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-check.stdout.txt +67 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-evidence.json +34 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-packet.json +128 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-packet.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-packet.stdout.txt +128 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-pin.json +54 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-pin.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-pin.stdout.txt +60 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-readback.json +15 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-service.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-service.stdout.txt +82 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-structure.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-structure.stdout.txt +9 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-check.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-check.stdout.txt +79 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-packet-refused.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-packet-refused.stdout.txt +7 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-pin-refresh.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-pin-refresh.stdout.txt +66 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-pin.json +60 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-structure.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-structure.stdout.txt +9 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-check.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-check.stdout.txt +73 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-evidence.json +34 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-packet.json +134 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-packet.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-packet.stdout.txt +134 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-readback.json +15 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-service.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-service.stdout.txt +148 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-structure.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-structure.stdout.txt +9 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/node-version.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/node-version.stdout.txt +1 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/python-version.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/python-version.stdout.txt +1 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-evidence.json +34 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-packet.json +134 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-packet.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-packet.stdout.txt +134 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-readback.json +15 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-service.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-service.stdout.txt +266 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-structure.stderr.txt +0 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-structure.stdout.txt +9 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/docs/entity_model.md +33 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/docs/glossary.md +9 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/docs/plans/UC-001.md +20 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/docs/requirements.md +10 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/docs/test_cases/TC-001-submit-expense.md +37 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/docs/test_cases/TC-002-description-limit.md +42 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/docs/use_cases/UC-001-submit-expense.md +76 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/docs/use_cases.puml +12 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/docs/vision.md +21 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/src/expense.mjs +48 -0
- package/docs/modernization/evidence/local-pilot-20261003/project/tests/expense.test.mjs +116 -0
- package/docs/modernization/evidence/local-pilot-20261003/scope.json +31 -0
- package/docs/modernization/reviews/2026-10-03-claude-cli/CONTRACTS.ko.md +122 -0
- package/docs/modernization/reviews/2026-10-03-claude-cli/DIRECTION.ko.md +84 -0
- package/examples/spec-workflow/README.md +54 -0
- package/examples/spec-workflow/docs/entity_model.md +33 -0
- package/examples/spec-workflow/docs/glossary.md +9 -0
- package/examples/spec-workflow/docs/requirements.md +10 -0
- package/examples/spec-workflow/docs/test_cases/TC-001-submit-expense.md +37 -0
- package/examples/spec-workflow/docs/use_cases/UC-001-submit-expense.md +63 -0
- package/examples/spec-workflow/docs/use_cases.puml +12 -0
- package/examples/spec-workflow/docs/vision.md +21 -0
- package/package.json +37 -105
- package/plugins/aiwf-angular-jpa/.claude-plugin/plugin.json +11 -0
- package/plugins/aiwf-angular-jpa/LICENSE +201 -0
- package/plugins/aiwf-angular-jpa/NOTICE +16 -0
- package/plugins/aiwf-angular-jpa/README.md +54 -0
- package/plugins/aiwf-angular-jpa/UPSTREAM.json +35 -0
- package/plugins/aiwf-angular-jpa/agents/uc-coverage.md +263 -0
- package/plugins/aiwf-angular-jpa/rules/mcp-servers.md +64 -0
- package/plugins/aiwf-angular-jpa/skills/coverage-check/SKILL.md +190 -0
- package/plugins/aiwf-angular-jpa/skills/flyway-migration/SKILL.md +119 -0
- package/plugins/aiwf-angular-jpa/skills/implement/SKILL.md +528 -0
- package/plugins/aiwf-angular-jpa/skills/implement/references/module-layout.md +95 -0
- package/plugins/aiwf-angular-jpa/skills/playwright-test/SKILL.md +360 -0
- package/plugins/aiwf-angular-jpa/skills/spring-boot-test/SKILL.md +504 -0
- package/plugins/aiwf-angular-jpa/skills/vitest-test/SKILL.md +309 -0
- package/plugins/aiwf-blazor-dotnet/.claude-plugin/plugin.json +11 -0
- package/plugins/aiwf-blazor-dotnet/LICENSE +201 -0
- package/plugins/aiwf-blazor-dotnet/NOTICE +16 -0
- package/plugins/aiwf-blazor-dotnet/README.md +53 -0
- package/plugins/aiwf-blazor-dotnet/UPSTREAM.json +31 -0
- package/plugins/aiwf-blazor-dotnet/rules/mcp-servers.md +25 -0
- package/plugins/aiwf-blazor-dotnet/skills/bunit-test/SKILL.md +110 -0
- package/plugins/aiwf-blazor-dotnet/skills/dotnet-test/SKILL.md +108 -0
- package/plugins/aiwf-blazor-dotnet/skills/ef-migration/SKILL.md +43 -0
- package/plugins/aiwf-blazor-dotnet/skills/implement/SKILL.md +149 -0
- package/plugins/aiwf-blazor-dotnet/skills/playwright-test/SKILL.md +130 -0
- package/plugins/aiwf-core/.claude-plugin/plugin.json +11 -0
- package/plugins/aiwf-core/LICENSE +201 -0
- package/plugins/aiwf-core/NOTICE +20 -0
- package/plugins/aiwf-core/README.md +38 -0
- package/plugins/aiwf-core/UPSTREAM.json +50 -0
- package/plugins/aiwf-core/skills/entity-model/SKILL.md +160 -0
- package/plugins/aiwf-core/skills/entity-model/references/REFERENCE.md +36 -0
- package/plugins/aiwf-core/skills/requirements/SKILL.md +157 -0
- package/plugins/aiwf-core/skills/requirements/references/REFERENCE.md +70 -0
- package/plugins/aiwf-core/skills/requirements/references/glossary.md +7 -0
- package/plugins/aiwf-core/skills/reverse-engineer/SKILL.md +509 -0
- package/plugins/aiwf-core/skills/reverse-engineer/references/stack-signals.md +210 -0
- package/plugins/aiwf-core/skills/spec-review/SKILL.md +197 -0
- package/plugins/aiwf-core/skills/spec-review/references/lint-codes.md +63 -0
- package/plugins/aiwf-core/skills/spec-review/references/review-checklist.md +189 -0
- package/plugins/aiwf-core/skills/spec-review/scripts/spec_lint.py +1216 -0
- package/plugins/aiwf-core/skills/test-case/SKILL.md +138 -0
- package/plugins/aiwf-core/skills/test-case/references/example-process.bpmn +118 -0
- package/plugins/aiwf-core/skills/test-case/references/example.md +38 -0
- package/plugins/aiwf-core/skills/test-case/references/test-case.md +35 -0
- package/plugins/aiwf-core/skills/test-case/scripts/bpmn_paths.py +542 -0
- package/plugins/aiwf-core/skills/use-case-diagram/SKILL.md +99 -0
- package/plugins/aiwf-core/skills/use-case-spec/SKILL.md +257 -0
- package/plugins/aiwf-core/skills/use-case-spec/references/clarify-checklist.md +70 -0
- package/plugins/aiwf-core/skills/use-case-spec/references/example.md +88 -0
- package/plugins/aiwf-core/skills/use-case-spec/references/format-spec.md +246 -0
- package/plugins/aiwf-core/skills/use-case-spec/references/use-case.md +50 -0
- package/plugins/aiwf-core/skills/use-case-spec/scripts/validate_use_case.py +941 -0
- package/plugins/aiwf-delegate-claude/.claude-plugin/plugin.json +9 -0
- package/plugins/aiwf-delegate-claude/LICENSE +21 -0
- package/plugins/aiwf-delegate-claude/NOTICE +4 -0
- package/plugins/aiwf-delegate-claude/README.md +10 -0
- package/plugins/aiwf-delegate-claude/plugin.json +13 -0
- package/plugins/aiwf-delegate-claude/skills/delegate-claude/LICENSE +21 -0
- package/plugins/aiwf-delegate-claude/skills/delegate-claude/NOTICE +4 -0
- package/plugins/aiwf-delegate-claude/skills/delegate-claude/SKILL.md +49 -0
- package/plugins/aiwf-delegate-claude/skills/delegate-claude/agents/openai.yaml +2 -0
- package/plugins/aiwf-delegate-codex/.claude-plugin/plugin.json +9 -0
- package/plugins/aiwf-delegate-codex/LICENSE +21 -0
- package/plugins/aiwf-delegate-codex/NOTICE +4 -0
- package/plugins/aiwf-delegate-codex/README.md +10 -0
- package/plugins/aiwf-delegate-codex/plugin.json +13 -0
- package/plugins/aiwf-delegate-codex/skills/delegate-codex/LICENSE +21 -0
- package/plugins/aiwf-delegate-codex/skills/delegate-codex/NOTICE +4 -0
- package/plugins/aiwf-delegate-codex/skills/delegate-codex/SKILL.md +47 -0
- package/plugins/aiwf-delegate-codex/skills/delegate-codex/agents/openai.yaml +2 -0
- package/plugins/aiwf-nestjs-nextjs/.claude-plugin/plugin.json +11 -0
- package/plugins/aiwf-nestjs-nextjs/LICENSE +201 -0
- package/plugins/aiwf-nestjs-nextjs/NOTICE +16 -0
- package/plugins/aiwf-nestjs-nextjs/README.md +53 -0
- package/plugins/aiwf-nestjs-nextjs/UPSTREAM.json +32 -0
- package/plugins/aiwf-nestjs-nextjs/rules/mcp-servers.md +59 -0
- package/plugins/aiwf-nestjs-nextjs/skills/drizzle-migration/SKILL.md +222 -0
- package/plugins/aiwf-nestjs-nextjs/skills/implement/SKILL.md +393 -0
- package/plugins/aiwf-nestjs-nextjs/skills/implement/references/project-layout.md +158 -0
- package/plugins/aiwf-nestjs-nextjs/skills/nest-test/SKILL.md +300 -0
- package/plugins/aiwf-nestjs-nextjs/skills/playwright-test/SKILL.md +245 -0
- package/plugins/aiwf-nestjs-nextjs/skills/react-test/SKILL.md +217 -0
- package/plugins/aiwf-spec/.claude-plugin/plugin.json +9 -0
- package/plugins/aiwf-spec/LICENSE +201 -0
- package/plugins/aiwf-spec/NOTICE +20 -0
- package/plugins/aiwf-spec/README.md +36 -0
- package/plugins/aiwf-spec/skills/sync-docs/SKILL.md +47 -0
- package/plugins/aiwf-spec/skills/workflow/SKILL.md +42 -0
- package/plugins/aiwf-vaadin-jooq/.claude-plugin/plugin.json +11 -0
- package/plugins/aiwf-vaadin-jooq/LICENSE +201 -0
- package/plugins/aiwf-vaadin-jooq/NOTICE +16 -0
- package/plugins/aiwf-vaadin-jooq/README.md +56 -0
- package/plugins/aiwf-vaadin-jooq/UPSTREAM.json +43 -0
- package/plugins/aiwf-vaadin-jooq/agents/uc-coverage.md +260 -0
- package/plugins/aiwf-vaadin-jooq/rules/mcp-servers.md +44 -0
- package/plugins/aiwf-vaadin-jooq/skills/browserless-test/SKILL.md +407 -0
- package/plugins/aiwf-vaadin-jooq/skills/browserless-test/references/UC001ManagePersonsTest.java +111 -0
- package/plugins/aiwf-vaadin-jooq/skills/coverage-check/SKILL.md +190 -0
- package/plugins/aiwf-vaadin-jooq/skills/flyway-migration/SKILL.md +70 -0
- package/plugins/aiwf-vaadin-jooq/skills/hilla-test/SKILL.md +350 -0
- package/plugins/aiwf-vaadin-jooq/skills/hilla-test/references/UC001ManagePersonsServiceTest.java +81 -0
- package/plugins/aiwf-vaadin-jooq/skills/hilla-test/references/UC001ManagePersonsViewTest.tsx +87 -0
- package/plugins/aiwf-vaadin-jooq/skills/implement/SKILL.md +196 -0
- package/plugins/aiwf-vaadin-jooq/skills/implement-hilla/SKILL.md +216 -0
- package/plugins/aiwf-vaadin-jooq/skills/karibu-test/SKILL.md +298 -0
- package/plugins/aiwf-vaadin-jooq/skills/karibu-test/references/UC001ManagePersonsTest.java +93 -0
- package/plugins/aiwf-vaadin-jooq/skills/playwright-test/SKILL.md +237 -0
- package/plugins/aiwf-vaadin-jooq/skills/playwright-test/references/ExampleViewIT.java +143 -0
- package/plugins/aiwf-vaadin-jooq/skills/playwright-test/references/TC001CustomerOnboardingIT.java +144 -0
- package/plugins/aiwf-vaadin-jooq/skills/playwright-test/references/dramafinder-api.md +190 -0
- package/scripts/check-dependencies.js +26 -96
- package/scripts/install-spec-skills.mjs +126 -0
- package/scripts/validate-spec-plugin.mjs +145 -0
- package/src/cli/spec-cli.js +292 -0
- package/src/lib/spec-workflow.js +982 -0
- package/docs/ADR_MANAGEMENT_GUIDE.ko.md +0 -602
- package/docs/ADR_MANAGEMENT_GUIDE.md +0 -602
- package/docs/AI-WORKFLOW.ko.md +0 -299
- package/docs/AI-WORKFLOW.md +0 -401
- package/docs/API_REFERENCE_FULL.ko.md +0 -1135
- package/docs/API_REFERENCE_FULL.md +0 -1135
- package/docs/ARCHITECTURE.ko.md +0 -314
- package/docs/ARCHITECTURE.md +0 -314
- package/docs/CLI_USAGE_GUIDE.ko.md +0 -634
- package/docs/CLI_USAGE_GUIDE.md +0 -640
- package/docs/CODE_CLEANUP_GUIDE.ko.md +0 -415
- package/docs/CODE_CLEANUP_GUIDE.md +0 -415
- package/docs/COMMANDS_GUIDE.ko.md +0 -1037
- package/docs/COMMANDS_GUIDE.md +0 -1037
- package/docs/CONTRIBUTING.ko.md +0 -408
- package/docs/CONTRIBUTING.md +0 -408
- package/docs/DEVELOPMENT_GUIDE.ko.md +0 -440
- package/docs/DEVELOPMENT_GUIDE.md +0 -727
- package/docs/EXAMPLES.ko.md +0 -695
- package/docs/EXAMPLES.md +0 -693
- package/docs/GETTING_STARTED.ko.md +0 -219
- package/docs/GETTING_STARTED.md +0 -476
- package/docs/MODULE_MANAGEMENT_GUIDE.ko.md +0 -289
- package/docs/MODULE_MANAGEMENT_GUIDE.md +0 -289
- package/docs/PERFORMANCE_ARCHITECTURE.md +0 -494
- package/docs/PERFORMANCE_GUIDELINES.ko.md +0 -388
- package/docs/PERFORMANCE_GUIDELINES.md +0 -553
- package/docs/PRD.ko.md +0 -148
- package/docs/PRD.md +0 -150
- package/docs/ROADMAP_v0.4.0.md +0 -286
- package/docs/STATE_MANAGEMENT_GUIDE.ko.md +0 -278
- package/docs/STATE_MANAGEMENT_GUIDE.md +0 -278
- package/docs/TROUBLESHOOTING.ko.md +0 -366
- package/docs/TROUBLESHOOTING.md +0 -722
- package/docs/VALIDATOR_API.ko.md +0 -324
- package/docs/VALIDATOR_API.md +0 -324
- package/docs/YOLO_SYSTEM_GUIDE.ko.md +0 -542
- package/docs/YOLO_SYSTEM_GUIDE.md +0 -542
- package/docs/designs/AI_PERSONA_SYSTEM_DESIGN.md +0 -516
- package/docs/designs/API_DOCUMENTATION.md +0 -932
- package/docs/designs/API_REFERENCE.md +0 -979
- package/docs/designs/Enhanced_Installation_Flow_Design.md +0 -498
- package/docs/designs/aiwf-metadata-system-prd.md +0 -127
- package/docs/designs/offline-template-cache.md +0 -323
- package/docs/designs/persona-aware-compression.md +0 -168
- package/docs/guides/ai-personas-guide-ko.md +0 -239
- package/docs/guides/ai-personas-guide.md +0 -239
- package/docs/guides/checkpoint-system-guide-ko.md +0 -356
- package/docs/guides/checkpoint-system-guide.md +0 -356
- package/docs/guides/context-compression-guide-ko.md +0 -313
- package/docs/guides/context-compression-guide.md +0 -313
- package/docs/guides/independent-sprint-guide-ko.md +0 -321
- package/docs/guides/independent-sprint-guide.md +0 -321
- package/rules/global/aiwf-code-style-guide.md +0 -30
- package/rules/global/aiwf-coding-principles.md +0 -33
- package/rules/global/aiwf-development-process.md +0 -41
- package/rules/global/aiwf-global-rules.md +0 -84
- package/rules/manual/aiwf-generate-plan-docs.md +0 -280
- package/scripts/run-integration-tests.js +0 -317
- package/scripts/update-file-lists.js +0 -267
- package/scripts/validate-commands.js +0 -254
- package/src/cli/index.js +0 -184
- package/src/commands/sprint-independent.js +0 -393
- package/src/commands/state.js +0 -1164
- package/src/commands/yolo-config.js +0 -502
- package/src/config/file-lists.js +0 -147
- package/src/config/yolo-config-template.yaml +0 -168
- package/src/lib/backup-manager.js +0 -271
- package/src/lib/file-downloader.js +0 -304
- package/src/lib/installer.js +0 -1270
- package/src/lib/rollback-manager.js +0 -418
- package/src/lib/validator.js +0 -376
- package/src/utils/checkpoint-manager.js +0 -435
- package/src/utils/language-utils.js +0 -331
- package/src/utils/messages.js +0 -190
- package/src/utils/paths.js +0 -112
|
@@ -1,516 +0,0 @@
|
|
|
1
|
-
# AI Persona System Design Document
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
The AI Persona System is designed to optimize Claude Code's behavior for different development tasks through specialized personas. This document outlines the architecture, implementation strategy, and integration approach.
|
|
6
|
-
|
|
7
|
-
## Design Principles
|
|
8
|
-
|
|
9
|
-
1. **Hybrid Activation**: Automatic detection with manual override capability
|
|
10
|
-
2. **Context Preservation**: Maintain existing context while adding persona-specific rules
|
|
11
|
-
3. **Predefined Personas**: Start with 5 core personas, extensible in future versions
|
|
12
|
-
4. **Prompt Injection**: Integrate with Claude via system prompt modification
|
|
13
|
-
5. **Tool Recommendations**: Suggest optimal tools without hard restrictions
|
|
14
|
-
6. **Dynamic Token Management**: Adjust token allocation based on task complexity
|
|
15
|
-
7. **Metrics-Driven**: Collect completion time and quality metrics for continuous improvement
|
|
16
|
-
|
|
17
|
-
## Architecture
|
|
18
|
-
|
|
19
|
-
### System Components
|
|
20
|
-
|
|
21
|
-
```
|
|
22
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
23
|
-
│ Claude Code │
|
|
24
|
-
├─────────────────────────────────────────────────────────────┤
|
|
25
|
-
│ AI Persona System │
|
|
26
|
-
├─────────────────┬───────────────────┬───────────────────────┤
|
|
27
|
-
│ Persona Manager │ Context Engine │ Metrics Collector │
|
|
28
|
-
├─────────────────┼───────────────────┼───────────────────────┤
|
|
29
|
-
│ Auto Detector │ Rule Processor │ Quality Analyzer │
|
|
30
|
-
│ Manual Switch │ Token Optimizer │ Time Tracker │
|
|
31
|
-
│ State Manager │ Prompt Builder │ Report Generator │
|
|
32
|
-
└─────────────────┴───────────────────┴───────────────────────┘
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
### Core Personas
|
|
36
|
-
|
|
37
|
-
| Persona | Primary Focus | Key Behaviors | Recommended Tools |
|
|
38
|
-
|---------|---------------|---------------|-------------------|
|
|
39
|
-
| **Architect** | System design | Big picture thinking, scalability focus | Glob, LS, MarkdownProcessor |
|
|
40
|
-
| **Debugger** | Problem solving | Detailed analysis, systematic approach | Grep, Read, MemoryProfiler |
|
|
41
|
-
| **Reviewer** | Code quality | Standards compliance, security awareness | Git commands, FileUtils |
|
|
42
|
-
| **Documenter** | Documentation | Clear explanations, examples | MarkdownProcessor, TemplateEngine |
|
|
43
|
-
| **Optimizer** | Performance | Efficiency focus, benchmarking | PerformanceBenchmark, TokenTracker |
|
|
44
|
-
|
|
45
|
-
## Implementation Strategy
|
|
46
|
-
|
|
47
|
-
### Phase 1: Core Infrastructure
|
|
48
|
-
|
|
49
|
-
#### 1.1 Persona Manager Class
|
|
50
|
-
|
|
51
|
-
```javascript
|
|
52
|
-
class PersonaManager {
|
|
53
|
-
constructor(options = {}) {
|
|
54
|
-
this.currentPersona = null;
|
|
55
|
-
this.personaHistory = [];
|
|
56
|
-
this.autoDetectionEnabled = true;
|
|
57
|
-
this.metricsCollector = new MetricsCollector();
|
|
58
|
-
this.contextEngine = new ContextEngine();
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
async switchPersona(personaName, options = {}) {
|
|
62
|
-
// Validate persona
|
|
63
|
-
if (!this.isValidPersona(personaName)) {
|
|
64
|
-
throw new Error(`Invalid persona: ${personaName}`);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// Save current state
|
|
68
|
-
if (this.currentPersona) {
|
|
69
|
-
this.personaHistory.push({
|
|
70
|
-
persona: this.currentPersona,
|
|
71
|
-
timestamp: new Date(),
|
|
72
|
-
metrics: await this.collectMetrics()
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// Load new persona
|
|
77
|
-
const persona = await this.loadPersona(personaName);
|
|
78
|
-
|
|
79
|
-
// Apply context rules
|
|
80
|
-
await this.contextEngine.applyPersonaRules(persona);
|
|
81
|
-
|
|
82
|
-
// Update state
|
|
83
|
-
this.currentPersona = persona;
|
|
84
|
-
|
|
85
|
-
// Track switch event
|
|
86
|
-
this.metricsCollector.trackEvent('persona_switch', {
|
|
87
|
-
from: this.personaHistory[this.personaHistory.length - 1]?.persona?.name,
|
|
88
|
-
to: personaName,
|
|
89
|
-
trigger: options.manual ? 'manual' : 'auto'
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
return persona;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
async detectOptimalPersona(taskContext) {
|
|
96
|
-
// Analyze task characteristics
|
|
97
|
-
const analysis = await this.analyzeTask(taskContext);
|
|
98
|
-
|
|
99
|
-
// Score each persona
|
|
100
|
-
const scores = {};
|
|
101
|
-
for (const personaName of this.getAvailablePersonas()) {
|
|
102
|
-
scores[personaName] = await this.scorePersonaFit(personaName, analysis);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
// Return best match
|
|
106
|
-
return Object.entries(scores)
|
|
107
|
-
.sort(([,a], [,b]) => b - a)[0][0];
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
#### 1.2 Context Engine
|
|
113
|
-
|
|
114
|
-
```javascript
|
|
115
|
-
class ContextEngine {
|
|
116
|
-
constructor() {
|
|
117
|
-
this.baseContext = null;
|
|
118
|
-
this.personaOverlay = null;
|
|
119
|
-
this.tokenOptimizer = new TokenOptimizer();
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
async applyPersonaRules(persona) {
|
|
123
|
-
// Preserve base context
|
|
124
|
-
if (!this.baseContext) {
|
|
125
|
-
this.baseContext = await this.captureCurrentContext();
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
// Build persona-specific overlay
|
|
129
|
-
this.personaOverlay = {
|
|
130
|
-
systemPrompt: this.buildSystemPrompt(persona),
|
|
131
|
-
priorityPatterns: persona.contextRules.priority,
|
|
132
|
-
exclusionPatterns: persona.contextRules.exclude,
|
|
133
|
-
focusAreas: persona.contextRules.focus,
|
|
134
|
-
keywords: persona.contextRules.keywords
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
// Optimize token usage
|
|
138
|
-
const optimizedContext = await this.tokenOptimizer.optimize(
|
|
139
|
-
this.baseContext,
|
|
140
|
-
this.personaOverlay,
|
|
141
|
-
persona.tokenAllocation
|
|
142
|
-
);
|
|
143
|
-
|
|
144
|
-
// Inject into Claude
|
|
145
|
-
await this.injectContext(optimizedContext);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
buildSystemPrompt(persona) {
|
|
149
|
-
return `You are currently operating in ${persona.name} mode.
|
|
150
|
-
|
|
151
|
-
Key behaviors:
|
|
152
|
-
${persona.behaviors.map(b => `- ${b}`).join('\n')}
|
|
153
|
-
|
|
154
|
-
Focus areas:
|
|
155
|
-
${persona.focusAreas.map(f => `- ${f}`).join('\n')}
|
|
156
|
-
|
|
157
|
-
Communication style: ${persona.communicationStyle}
|
|
158
|
-
|
|
159
|
-
Recommended tools: ${persona.recommendedTools.join(', ')}`;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
### Phase 2: Auto-Detection System
|
|
165
|
-
|
|
166
|
-
#### 2.1 Task Analyzer
|
|
167
|
-
|
|
168
|
-
```javascript
|
|
169
|
-
class TaskAnalyzer {
|
|
170
|
-
constructor() {
|
|
171
|
-
this.patterns = {
|
|
172
|
-
architecture: [
|
|
173
|
-
/design|architect|structure|system|scalab/i,
|
|
174
|
-
/interface|api|contract|schema/i
|
|
175
|
-
],
|
|
176
|
-
debugging: [
|
|
177
|
-
/bug|error|fix|issue|problem|debug/i,
|
|
178
|
-
/trace|stack|exception|fail/i
|
|
179
|
-
],
|
|
180
|
-
review: [
|
|
181
|
-
/review|audit|check|quality|standard/i,
|
|
182
|
-
/security|vulnerability|code.*smell/i
|
|
183
|
-
],
|
|
184
|
-
documentation: [
|
|
185
|
-
/document|docs|readme|guide|tutorial/i,
|
|
186
|
-
/explain|describe|comment/i
|
|
187
|
-
],
|
|
188
|
-
optimization: [
|
|
189
|
-
/optimiz|performance|speed|efficient/i,
|
|
190
|
-
/benchmark|profile|memory|token/i
|
|
191
|
-
]
|
|
192
|
-
};
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
async analyzeTask(context) {
|
|
196
|
-
const analysis = {
|
|
197
|
-
command: context.command,
|
|
198
|
-
recentFiles: await this.getRecentFiles(),
|
|
199
|
-
keywords: this.extractKeywords(context),
|
|
200
|
-
gitContext: await this.getGitContext(),
|
|
201
|
-
errorState: await this.checkErrorState()
|
|
202
|
-
};
|
|
203
|
-
|
|
204
|
-
// Score each persona category
|
|
205
|
-
analysis.scores = {};
|
|
206
|
-
for (const [persona, patterns] of Object.entries(this.patterns)) {
|
|
207
|
-
analysis.scores[persona] = this.calculatePatternScore(
|
|
208
|
-
analysis,
|
|
209
|
-
patterns
|
|
210
|
-
);
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
return analysis;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
calculatePatternScore(analysis, patterns) {
|
|
217
|
-
let score = 0;
|
|
218
|
-
|
|
219
|
-
// Check command
|
|
220
|
-
patterns.forEach(pattern => {
|
|
221
|
-
if (pattern.test(analysis.command)) score += 10;
|
|
222
|
-
});
|
|
223
|
-
|
|
224
|
-
// Check keywords
|
|
225
|
-
analysis.keywords.forEach(keyword => {
|
|
226
|
-
patterns.forEach(pattern => {
|
|
227
|
-
if (pattern.test(keyword)) score += 5;
|
|
228
|
-
});
|
|
229
|
-
});
|
|
230
|
-
|
|
231
|
-
// Context bonuses
|
|
232
|
-
if (analysis.errorState.hasErrors && patterns.some(p => p.test('debug'))) {
|
|
233
|
-
score += 20;
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
return score;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
### Phase 3: Metrics Collection
|
|
242
|
-
|
|
243
|
-
#### 3.1 Metrics Collector
|
|
244
|
-
|
|
245
|
-
```javascript
|
|
246
|
-
class MetricsCollector {
|
|
247
|
-
constructor() {
|
|
248
|
-
this.metrics = {
|
|
249
|
-
sessions: [],
|
|
250
|
-
personaPerformance: {},
|
|
251
|
-
taskOutcomes: []
|
|
252
|
-
};
|
|
253
|
-
this.currentSession = null;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
startSession(persona, task) {
|
|
257
|
-
this.currentSession = {
|
|
258
|
-
id: generateId(),
|
|
259
|
-
persona: persona.name,
|
|
260
|
-
task: task,
|
|
261
|
-
startTime: Date.now(),
|
|
262
|
-
events: [],
|
|
263
|
-
tokenUsage: {
|
|
264
|
-
start: this.getCurrentTokenCount(),
|
|
265
|
-
contextSwitches: 0
|
|
266
|
-
}
|
|
267
|
-
};
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
trackEvent(eventType, data) {
|
|
271
|
-
if (!this.currentSession) return;
|
|
272
|
-
|
|
273
|
-
this.currentSession.events.push({
|
|
274
|
-
type: eventType,
|
|
275
|
-
timestamp: Date.now(),
|
|
276
|
-
data
|
|
277
|
-
});
|
|
278
|
-
|
|
279
|
-
// Special handling for quality events
|
|
280
|
-
if (eventType === 'task_completed') {
|
|
281
|
-
this.calculateQualityMetrics(data);
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
async calculateQualityMetrics(completionData) {
|
|
286
|
-
const metrics = {
|
|
287
|
-
completionTime: Date.now() - this.currentSession.startTime,
|
|
288
|
-
tokenEfficiency: this.calculateTokenEfficiency(),
|
|
289
|
-
errorRate: await this.calculateErrorRate(),
|
|
290
|
-
codeQuality: await this.assessCodeQuality(completionData),
|
|
291
|
-
userSatisfaction: null // To be collected via feedback
|
|
292
|
-
};
|
|
293
|
-
|
|
294
|
-
this.currentSession.qualityMetrics = metrics;
|
|
295
|
-
this.updatePersonaPerformance(this.currentSession.persona, metrics);
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
calculateTokenEfficiency() {
|
|
299
|
-
const totalTokens = this.getCurrentTokenCount() -
|
|
300
|
-
this.currentSession.tokenUsage.start;
|
|
301
|
-
const taskComplexity = this.estimateTaskComplexity();
|
|
302
|
-
|
|
303
|
-
return {
|
|
304
|
-
totalUsed: totalTokens,
|
|
305
|
-
efficiency: taskComplexity / totalTokens,
|
|
306
|
-
contextSwitches: this.currentSession.tokenUsage.contextSwitches
|
|
307
|
-
};
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
async generateReport(timeRange = 'week') {
|
|
311
|
-
const report = {
|
|
312
|
-
summary: {
|
|
313
|
-
totalSessions: this.metrics.sessions.length,
|
|
314
|
-
averageCompletionTime: this.calculateAverageTime(),
|
|
315
|
-
personaUsage: this.getPersonaUsageStats(),
|
|
316
|
-
qualityTrend: this.calculateQualityTrend()
|
|
317
|
-
},
|
|
318
|
-
personaAnalysis: this.analyzePersonaEffectiveness(),
|
|
319
|
-
recommendations: this.generateRecommendations()
|
|
320
|
-
};
|
|
321
|
-
|
|
322
|
-
return report;
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
analyzePersonaEffectiveness() {
|
|
326
|
-
const analysis = {};
|
|
327
|
-
|
|
328
|
-
for (const [persona, data] of Object.entries(this.metrics.personaPerformance)) {
|
|
329
|
-
analysis[persona] = {
|
|
330
|
-
averageCompletionTime: average(data.completionTimes),
|
|
331
|
-
averageQualityScore: average(data.qualityScores),
|
|
332
|
-
tokenEfficiency: average(data.tokenEfficiencies),
|
|
333
|
-
bestUseCases: this.identifyBestUseCases(persona),
|
|
334
|
-
improvementAreas: this.identifyImprovementAreas(persona)
|
|
335
|
-
};
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
return analysis;
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
```
|
|
342
|
-
|
|
343
|
-
### Phase 4: Integration Points
|
|
344
|
-
|
|
345
|
-
#### 4.1 Claude Command Integration
|
|
346
|
-
|
|
347
|
-
```javascript
|
|
348
|
-
// In .claude/commands/aiwf/persona-commands.js
|
|
349
|
-
|
|
350
|
-
export const personaCommands = {
|
|
351
|
-
'/project:aiwf:ai_persona:switch': async (personaName) => {
|
|
352
|
-
const manager = getPersonaManager();
|
|
353
|
-
await manager.switchPersona(personaName, { manual: true });
|
|
354
|
-
return `Switched to ${personaName} persona`;
|
|
355
|
-
},
|
|
356
|
-
|
|
357
|
-
'/project:aiwf:ai_persona:auto': async (enabled) => {
|
|
358
|
-
const manager = getPersonaManager();
|
|
359
|
-
manager.autoDetectionEnabled = enabled;
|
|
360
|
-
return `Auto-detection ${enabled ? 'enabled' : 'disabled'}`;
|
|
361
|
-
},
|
|
362
|
-
|
|
363
|
-
'/project:aiwf:ai_persona:status': async () => {
|
|
364
|
-
const manager = getPersonaManager();
|
|
365
|
-
const current = manager.currentPersona;
|
|
366
|
-
const metrics = await manager.metricsCollector.getCurrentSessionMetrics();
|
|
367
|
-
|
|
368
|
-
return formatPersonaStatus(current, metrics);
|
|
369
|
-
},
|
|
370
|
-
|
|
371
|
-
'/project:aiwf:ai_persona:report': async (timeRange) => {
|
|
372
|
-
const manager = getPersonaManager();
|
|
373
|
-
const report = await manager.metricsCollector.generateReport(timeRange);
|
|
374
|
-
|
|
375
|
-
return formatPersonaReport(report);
|
|
376
|
-
}
|
|
377
|
-
};
|
|
378
|
-
```
|
|
379
|
-
|
|
380
|
-
#### 4.2 Git Hook Integration
|
|
381
|
-
|
|
382
|
-
```bash
|
|
383
|
-
#!/bin/bash
|
|
384
|
-
# .git/hooks/post-commit
|
|
385
|
-
|
|
386
|
-
# Detect if this was a bug fix
|
|
387
|
-
if git log -1 --pretty=%B | grep -qiE "fix|bug|error"; then
|
|
388
|
-
# Suggest debugger persona for follow-up
|
|
389
|
-
echo "💡 Tip: Switch to debugger persona for thorough testing"
|
|
390
|
-
echo " /project:aiwf:ai_persona:debugger"
|
|
391
|
-
fi
|
|
392
|
-
|
|
393
|
-
# Track commit patterns for persona optimization
|
|
394
|
-
aiwf-persona track-commit
|
|
395
|
-
```
|
|
396
|
-
|
|
397
|
-
## Performance Optimization
|
|
398
|
-
|
|
399
|
-
### Token Management Strategy
|
|
400
|
-
|
|
401
|
-
1. **Base Allocation**: Each persona has a suggested token budget
|
|
402
|
-
- Architect: 30% context, 70% response
|
|
403
|
-
- Debugger: 50% context, 50% response
|
|
404
|
-
- Reviewer: 40% context, 60% response
|
|
405
|
-
- Documenter: 20% context, 80% response
|
|
406
|
-
- Optimizer: 60% context, 40% response
|
|
407
|
-
|
|
408
|
-
2. **Dynamic Adjustment**: Based on task complexity
|
|
409
|
-
- Simple tasks: -20% tokens
|
|
410
|
-
- Complex tasks: +30% tokens
|
|
411
|
-
- Multi-file tasks: +50% tokens
|
|
412
|
-
|
|
413
|
-
3. **Context Pruning**: Remove irrelevant information
|
|
414
|
-
- Architect: Prune implementation details
|
|
415
|
-
- Debugger: Prune documentation
|
|
416
|
-
- Reviewer: Prune test files
|
|
417
|
-
- Documenter: Prune internal logic
|
|
418
|
-
- Optimizer: Prune comments
|
|
419
|
-
|
|
420
|
-
## Testing Strategy
|
|
421
|
-
|
|
422
|
-
### Unit Tests
|
|
423
|
-
|
|
424
|
-
```javascript
|
|
425
|
-
describe('PersonaManager', () => {
|
|
426
|
-
test('switches personas correctly', async () => {
|
|
427
|
-
const manager = new PersonaManager();
|
|
428
|
-
await manager.switchPersona('architect');
|
|
429
|
-
|
|
430
|
-
expect(manager.currentPersona.name).toBe('architect');
|
|
431
|
-
expect(manager.personaHistory).toHaveLength(0);
|
|
432
|
-
});
|
|
433
|
-
|
|
434
|
-
test('detects optimal persona', async () => {
|
|
435
|
-
const manager = new PersonaManager();
|
|
436
|
-
const taskContext = {
|
|
437
|
-
command: 'debug the login error',
|
|
438
|
-
recentFiles: ['auth.js', 'login.test.js']
|
|
439
|
-
};
|
|
440
|
-
|
|
441
|
-
const optimal = await manager.detectOptimalPersona(taskContext);
|
|
442
|
-
expect(optimal).toBe('debugger');
|
|
443
|
-
});
|
|
444
|
-
});
|
|
445
|
-
```
|
|
446
|
-
|
|
447
|
-
### Integration Tests
|
|
448
|
-
|
|
449
|
-
```javascript
|
|
450
|
-
describe('Persona System Integration', () => {
|
|
451
|
-
test('full workflow with auto-detection', async () => {
|
|
452
|
-
// Initialize system
|
|
453
|
-
const system = await initializePersonaSystem();
|
|
454
|
-
|
|
455
|
-
// Simulate task
|
|
456
|
-
const task = {
|
|
457
|
-
type: 'bug_fix',
|
|
458
|
-
description: 'Fix authentication timeout'
|
|
459
|
-
};
|
|
460
|
-
|
|
461
|
-
// Start task
|
|
462
|
-
await system.startTask(task);
|
|
463
|
-
|
|
464
|
-
// Verify persona selection
|
|
465
|
-
expect(system.currentPersona.name).toBe('debugger');
|
|
466
|
-
|
|
467
|
-
// Complete task
|
|
468
|
-
const result = await system.completeTask({
|
|
469
|
-
success: true,
|
|
470
|
-
filesModified: ['auth.js']
|
|
471
|
-
});
|
|
472
|
-
|
|
473
|
-
// Verify metrics collected
|
|
474
|
-
expect(result.metrics).toHaveProperty('completionTime');
|
|
475
|
-
expect(result.metrics).toHaveProperty('tokenEfficiency');
|
|
476
|
-
});
|
|
477
|
-
});
|
|
478
|
-
```
|
|
479
|
-
|
|
480
|
-
## Rollout Plan
|
|
481
|
-
|
|
482
|
-
### Phase 1: Beta (Week 1-2)
|
|
483
|
-
- Core PersonaManager implementation
|
|
484
|
-
- Manual switching only
|
|
485
|
-
- Basic metrics collection
|
|
486
|
-
|
|
487
|
-
### Phase 2: Auto-Detection (Week 3-4)
|
|
488
|
-
- Task analyzer implementation
|
|
489
|
-
- Auto-detection with manual override
|
|
490
|
-
- Enhanced context engine
|
|
491
|
-
|
|
492
|
-
### Phase 3: Metrics & Optimization (Week 5-6)
|
|
493
|
-
- Full metrics collection
|
|
494
|
-
- Performance reports
|
|
495
|
-
- Token optimization
|
|
496
|
-
|
|
497
|
-
### Phase 4: Production (Week 7+)
|
|
498
|
-
- Public release
|
|
499
|
-
- User feedback collection
|
|
500
|
-
- Continuous improvement
|
|
501
|
-
|
|
502
|
-
## Success Metrics
|
|
503
|
-
|
|
504
|
-
1. **Adoption Rate**: >70% of users actively using personas
|
|
505
|
-
2. **Task Completion Time**: 20% reduction on average
|
|
506
|
-
3. **Token Efficiency**: 30% improvement
|
|
507
|
-
4. **User Satisfaction**: >4.5/5 rating
|
|
508
|
-
5. **Auto-Detection Accuracy**: >85% correct persona selection
|
|
509
|
-
|
|
510
|
-
## Future Enhancements
|
|
511
|
-
|
|
512
|
-
1. **Custom Personas**: User-defined personas
|
|
513
|
-
2. **Team Personas**: Shared team configurations
|
|
514
|
-
3. **Learning System**: ML-based persona optimization
|
|
515
|
-
4. **IDE Integration**: Direct VS Code/Cursor integration
|
|
516
|
-
5. **Persona Marketplace**: Community-shared personas
|