aiwf 0.3.22 → 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 -104
- 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/{src/lib/resources/templates/npm-library/template → plugins/aiwf-delegate-claude}/LICENSE +2 -2
- 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/DEPENDENCY_MAP.md +0 -90
- package/src/cli/cache-cli.js +0 -459
- package/src/cli/checkpoint-cli.js +0 -417
- package/src/cli/index.js +0 -481
- package/src/cli/language-cli.js +0 -286
- package/src/cli/sprint-cli.js +0 -287
- package/src/commands/ai-tool.js +0 -383
- package/src/commands/compress.js +0 -60
- package/src/commands/create-project.js +0 -160
- package/src/commands/evaluate.js +0 -459
- package/src/commands/persona.js +0 -309
- package/src/commands/sprint-independent.js +0 -393
- package/src/commands/sprint-task.js +0 -262
- package/src/commands/state.js +0 -1164
- package/src/commands/token.js +0 -312
- 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/ai-persona-manager.js +0 -711
- package/src/lib/backup-manager.js +0 -271
- package/src/lib/cache-system.js +0 -332
- package/src/lib/context-engine.js +0 -568
- package/src/lib/file-downloader.js +0 -304
- package/src/lib/github-integration.js +0 -402
- package/src/lib/installer.js +0 -1066
- package/src/lib/memory-profiler.js +0 -471
- package/src/lib/metrics-collector.js +0 -885
- package/src/lib/offline-detector.js +0 -386
- package/src/lib/resource-loader-enhanced.js +0 -399
- package/src/lib/resource-loader.js +0 -250
- package/src/lib/resources/commands/ai-persona.js +0 -602
- package/src/lib/resources/commands/compress-context.js +0 -389
- package/src/lib/resources/commands/evaluate.js +0 -246
- package/src/lib/resources/commands/persona-context-apply.js +0 -562
- package/src/lib/resources/commands/token-tracking.js +0 -443
- package/src/lib/resources/config/commit-patterns.js +0 -103
- package/src/lib/resources/config/language.json +0 -6
- package/src/lib/resources/personas/PERSONA_INDEX.md +0 -57
- package/src/lib/resources/personas/analyst.json +0 -44
- package/src/lib/resources/personas/architect/best_practices.md +0 -136
- package/src/lib/resources/personas/architect/knowledge_base.md +0 -377
- package/src/lib/resources/personas/architect.json +0 -44
- package/src/lib/resources/personas/backend/best_practices.md +0 -766
- package/src/lib/resources/personas/backend/knowledge_base.md +0 -1070
- package/src/lib/resources/personas/data_analyst/best_practices.md +0 -594
- package/src/lib/resources/personas/data_analyst/knowledge_base.md +0 -1057
- package/src/lib/resources/personas/developer.json +0 -44
- package/src/lib/resources/personas/developer.md +0 -37
- package/src/lib/resources/personas/evaluation_criteria.json +0 -137
- package/src/lib/resources/personas/frontend/best_practices.md +0 -445
- package/src/lib/resources/personas/frontend/knowledge_base.md +0 -729
- package/src/lib/resources/personas/persona-index.json +0 -31
- package/src/lib/resources/personas/reviewer.json +0 -44
- package/src/lib/resources/personas/security/best_practices.md +0 -307
- package/src/lib/resources/personas/security/knowledge_base.md +0 -498
- package/src/lib/resources/personas/tester.json +0 -44
- package/src/lib/resources/templates/README.md +0 -78
- package/src/lib/resources/templates/api-server/config.json +0 -64
- package/src/lib/resources/templates/api-server/template/.aiwf/config.json +0 -56
- package/src/lib/resources/templates/api-server/template/.aiwf/feature-ledger.json +0 -42
- package/src/lib/resources/templates/api-server/template/.aiwf/personas/backend-engineer.json +0 -40
- package/src/lib/resources/templates/api-server/template/.aiwf/scripts/cli.js +0 -111
- package/src/lib/resources/templates/api-server/template/.env.example +0 -29
- package/src/lib/resources/templates/api-server/template/.eslintrc.json +0 -23
- package/src/lib/resources/templates/api-server/template/README.md +0 -171
- package/src/lib/resources/templates/api-server/template/jest.config.js +0 -26
- package/src/lib/resources/templates/api-server/template/nodemon.json +0 -9
- package/src/lib/resources/templates/api-server/template/package.json +0 -61
- package/src/lib/resources/templates/api-server/template/src/app.ts +0 -60
- package/src/lib/resources/templates/api-server/template/src/config/swagger.ts +0 -38
- package/src/lib/resources/templates/api-server/template/src/controllers/aiwfController.ts +0 -54
- package/src/lib/resources/templates/api-server/template/src/controllers/authController.ts +0 -128
- package/src/lib/resources/templates/api-server/template/src/controllers/statusController.ts +0 -28
- package/src/lib/resources/templates/api-server/template/src/index.ts +0 -28
- package/src/lib/resources/templates/api-server/template/src/middleware/aiwfMiddleware.ts +0 -50
- package/src/lib/resources/templates/api-server/template/src/middleware/authMiddleware.ts +0 -41
- package/src/lib/resources/templates/api-server/template/src/middleware/errorHandler.ts +0 -42
- package/src/lib/resources/templates/api-server/template/src/middleware/notFoundHandler.ts +0 -14
- package/src/lib/resources/templates/api-server/template/src/middleware/requestLogger.ts +0 -20
- package/src/lib/resources/templates/api-server/template/src/routes/aiwf.ts +0 -31
- package/src/lib/resources/templates/api-server/template/src/routes/index.ts +0 -13
- package/src/lib/resources/templates/api-server/template/src/routes/v1/index.ts +0 -67
- package/src/lib/resources/templates/api-server/template/src/utils/logger.ts +0 -37
- package/src/lib/resources/templates/api-server/template/tests/app.test.ts +0 -40
- package/src/lib/resources/templates/api-server/template/tsconfig.json +0 -43
- package/src/lib/resources/templates/npm-library/config.json +0 -61
- package/src/lib/resources/templates/npm-library/template/README.md +0 -201
- package/src/lib/resources/templates/npm-library/template/package.json +0 -78
- package/src/lib/resources/templates/web-app/config.json +0 -53
- package/src/lib/resources/templates/web-app/template/.aiwf/config.json +0 -54
- package/src/lib/resources/templates/web-app/template/.aiwf/feature-ledger.json +0 -37
- package/src/lib/resources/templates/web-app/template/.aiwf/personas/fullstack-developer.json +0 -40
- package/src/lib/resources/templates/web-app/template/.aiwf/scripts/cli.js +0 -110
- package/src/lib/resources/templates/web-app/template/.eslintrc.cjs +0 -20
- package/src/lib/resources/templates/web-app/template/README.md +0 -151
- package/src/lib/resources/templates/web-app/template/index.html +0 -14
- package/src/lib/resources/templates/web-app/template/package.json +0 -44
- package/src/lib/resources/templates/web-app/template/postcss.config.js +0 -6
- package/src/lib/resources/templates/web-app/template/public/vite.svg +0 -1
- package/src/lib/resources/templates/web-app/template/src/App.tsx +0 -21
- package/src/lib/resources/templates/web-app/template/src/components/Layout.tsx +0 -57
- package/src/lib/resources/templates/web-app/template/src/components/aiwf/ContextStatus.tsx +0 -107
- package/src/lib/resources/templates/web-app/template/src/components/aiwf/TokenUsage.tsx +0 -71
- package/src/lib/resources/templates/web-app/template/src/index.css +0 -60
- package/src/lib/resources/templates/web-app/template/src/main.tsx +0 -10
- package/src/lib/resources/templates/web-app/template/src/pages/AiwfDashboard.tsx +0 -57
- package/src/lib/resources/templates/web-app/template/src/pages/HomePage.tsx +0 -89
- package/src/lib/resources/templates/web-app/template/src/pages/NotFound.tsx +0 -25
- package/src/lib/resources/templates/web-app/template/src/stores/aiwfStore.ts +0 -126
- package/src/lib/resources/templates/web-app/template/src/types/global.d.ts +0 -9
- package/src/lib/resources/templates/web-app/template/src/vite-env.d.ts +0 -1
- package/src/lib/resources/templates/web-app/template/tailwind.config.js +0 -30
- package/src/lib/resources/templates/web-app/template/tsconfig.json +0 -37
- package/src/lib/resources/templates/web-app/template/tsconfig.node.json +0 -10
- package/src/lib/resources/templates/web-app/template/vite.config.ts +0 -23
- package/src/lib/resources/utils/background-monitor.js +0 -223
- package/src/lib/resources/utils/compression-metrics.js +0 -1031
- package/src/lib/resources/utils/compression-strategies.js +0 -557
- package/src/lib/resources/utils/content-normalizer.js +0 -455
- package/src/lib/resources/utils/context-compressor.js +0 -583
- package/src/lib/resources/utils/context-rule-parser.js +0 -180
- package/src/lib/resources/utils/context-token-monitor.js +0 -463
- package/src/lib/resources/utils/context-update-manager.js +0 -502
- package/src/lib/resources/utils/git-utils.js +0 -220
- package/src/lib/resources/utils/importance-classifier.js +0 -645
- package/src/lib/resources/utils/information-filter.js +0 -710
- package/src/lib/resources/utils/persona-aware-compressor.js +0 -598
- package/src/lib/resources/utils/prompt-injector.js +0 -242
- package/src/lib/resources/utils/simplified-evaluator.js +0 -119
- package/src/lib/resources/utils/text-summarizer.js +0 -492
- package/src/lib/resources/utils/token-counter.js +0 -177
- package/src/lib/resources/utils/token-monitor.js +0 -484
- package/src/lib/resources/utils/token-reporter.js +0 -452
- package/src/lib/resources/utils/token-storage.js +0 -433
- package/src/lib/resources/utils/token-tracker.js +0 -283
- package/src/lib/rollback-manager.js +0 -418
- package/src/lib/state/priority-calculator.js +0 -217
- package/src/lib/state/state-index.js +0 -155
- package/src/lib/state/task-scanner.js +0 -328
- package/src/lib/task-analyzer.js +0 -599
- package/src/lib/template-cache-system.js +0 -559
- package/src/lib/template-downloader.js +0 -467
- package/src/lib/template-version-manager.js +0 -491
- package/src/lib/token-optimizer.js +0 -517
- package/src/lib/validator.js +0 -376
- package/src/utils/checkpoint-manager.js +0 -435
- package/src/utils/engineering-guard.js +0 -399
- package/src/utils/language-utils.js +0 -331
- package/src/utils/messages.js +0 -166
- package/src/utils/paths.js +0 -112
|
@@ -1,553 +0,0 @@
|
|
|
1
|
-
# AIWF 성능 가이드라인
|
|
2
|
-
|
|
3
|
-
## 개요
|
|
4
|
-
|
|
5
|
-
이 문서는 AIWF 프로젝트에서 최적의 성능을 얻기 위한 가이드라인과 모범 사례를 제공합니다. 개발자들이 성능을 고려한 코드를 작성하고 시스템을 효율적으로 운영할 수 있도록 돕습니다.
|
|
6
|
-
|
|
7
|
-
## 1. GitHub API 사용 최적화
|
|
8
|
-
|
|
9
|
-
### 1.1 캐싱 전략
|
|
10
|
-
|
|
11
|
-
#### 기본 캐싱 사용법
|
|
12
|
-
|
|
13
|
-
```javascript
|
|
14
|
-
import { GitHubAPICache, OptimizedGitHubClient } from './lib/cache-system.js';
|
|
15
|
-
|
|
16
|
-
// 캐시 시스템 초기화
|
|
17
|
-
const githubClient = new OptimizedGitHubClient();
|
|
18
|
-
await githubClient.init();
|
|
19
|
-
|
|
20
|
-
// 자동 캐싱과 함께 API 호출
|
|
21
|
-
const repoData = await githubClient.cachedFetch('https://api.github.com/repos/user/repo');
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
#### 캐시 설정 최적화
|
|
25
|
-
|
|
26
|
-
```javascript
|
|
27
|
-
// 환경별 캐시 설정
|
|
28
|
-
const cacheOptions = {
|
|
29
|
-
cacheDir: process.env.NODE_ENV === 'production' ? '.aiwf/cache' : '.aiwf/cache-dev',
|
|
30
|
-
ttl: process.env.NODE_ENV === 'production' ? 300000 : 60000 // 프로덕션: 5분, 개발: 1분
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
const client = new OptimizedGitHubClient('https://api.github.com', cacheOptions);
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
### 1.2 배치 처리
|
|
37
|
-
|
|
38
|
-
#### 여러 API 호출 최적화
|
|
39
|
-
|
|
40
|
-
```javascript
|
|
41
|
-
// 순차 호출 (비효율적)
|
|
42
|
-
const repos = [];
|
|
43
|
-
for (const repoName of repoNames) {
|
|
44
|
-
repos.push(await client.cachedFetch(`/repos/user/${repoName}`));
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// 배치 처리 (효율적)
|
|
48
|
-
const urls = repoNames.map(name => `/repos/user/${name}`);
|
|
49
|
-
const results = await client.batchRequest(urls, { batchSize: 10 });
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### 1.3 Rate Limiting 대응
|
|
53
|
-
|
|
54
|
-
```javascript
|
|
55
|
-
// Rate Limiter 커스터마이징
|
|
56
|
-
class CustomRateLimiter extends RateLimiter {
|
|
57
|
-
constructor() {
|
|
58
|
-
super(60, 60000); // 분당 60개 요청
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
async waitForNext() {
|
|
62
|
-
// GitHub API 헤더에서 남은 요청 수 확인
|
|
63
|
-
const remaining = this.getRemainingRequests();
|
|
64
|
-
if (remaining < 10) {
|
|
65
|
-
// 남은 요청이 적으면 더 오래 대기
|
|
66
|
-
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return super.waitForNext();
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
## 2. 파일 시스템 작업 최적화
|
|
75
|
-
|
|
76
|
-
### 2.1 배치 처리 활용
|
|
77
|
-
|
|
78
|
-
#### 단일 파일 작업 (비효율적)
|
|
79
|
-
|
|
80
|
-
```javascript
|
|
81
|
-
// 비효율적인 방법
|
|
82
|
-
for (const filePath of filePaths) {
|
|
83
|
-
const content = await fs.readFile(filePath, 'utf8');
|
|
84
|
-
await processFile(content);
|
|
85
|
-
}
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
#### 배치 처리 (효율적)
|
|
89
|
-
|
|
90
|
-
```javascript
|
|
91
|
-
import { FileBatchProcessor, FileUtils } from './lib/file-batch-processor.js';
|
|
92
|
-
|
|
93
|
-
// 효율적인 방법
|
|
94
|
-
const processor = new FileBatchProcessor({
|
|
95
|
-
maxConcurrency: 5,
|
|
96
|
-
batchSize: 20
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
const results = await FileUtils.readMultipleFiles(filePaths, processor);
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
### 2.2 큰 파일 처리
|
|
103
|
-
|
|
104
|
-
#### 스트리밍 처리
|
|
105
|
-
|
|
106
|
-
```javascript
|
|
107
|
-
// 큰 파일은 자동으로 스트리밍 처리됨 (10MB 이상)
|
|
108
|
-
const processor = new FileBatchProcessor();
|
|
109
|
-
|
|
110
|
-
// 큰 파일 읽기 - 자동으로 스트리밍 사용
|
|
111
|
-
const content = await processor.addReadOperation('/path/to/large/file.txt');
|
|
112
|
-
|
|
113
|
-
// 큰 파일 쓰기 - 자동으로 스트리밍 사용
|
|
114
|
-
await processor.addWriteOperation('/path/to/output.txt', largeContent);
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
### 2.3 메모리 효율적인 파일 복사
|
|
118
|
-
|
|
119
|
-
```javascript
|
|
120
|
-
// 메모리 효율적인 파일 복사
|
|
121
|
-
const fileMappings = {
|
|
122
|
-
'/source/file1.txt': '/dest/file1.txt',
|
|
123
|
-
'/source/file2.txt': '/dest/file2.txt'
|
|
124
|
-
};
|
|
125
|
-
|
|
126
|
-
const results = await FileUtils.copyMultipleFiles(fileMappings, processor);
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
## 3. 메모리 사용량 최적화
|
|
130
|
-
|
|
131
|
-
### 3.1 메모리 프로파일링
|
|
132
|
-
|
|
133
|
-
#### 기본 프로파일링
|
|
134
|
-
|
|
135
|
-
```javascript
|
|
136
|
-
import { MemoryProfiler } from './lib/memory-profiler.js';
|
|
137
|
-
|
|
138
|
-
const profiler = new MemoryProfiler({
|
|
139
|
-
samplingInterval: 1000, // 1초마다 샘플링
|
|
140
|
-
heapThreshold: 100 * 1024 * 1024 // 100MB 임계값
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
// 프로파일링 시작
|
|
144
|
-
profiler.startProfiling();
|
|
145
|
-
|
|
146
|
-
// 작업 실행
|
|
147
|
-
await performWorkload();
|
|
148
|
-
|
|
149
|
-
// 프로파일링 중지 및 보고서 생성
|
|
150
|
-
profiler.stopProfiling();
|
|
151
|
-
const report = profiler.generateReport();
|
|
152
|
-
console.log('메모리 사용량 보고서:', report);
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
#### 스냅샷 비교
|
|
156
|
-
|
|
157
|
-
```javascript
|
|
158
|
-
// 작업 전후 메모리 사용량 비교
|
|
159
|
-
profiler.createSnapshot('before-operation');
|
|
160
|
-
|
|
161
|
-
// 메모리 집약적인 작업
|
|
162
|
-
await processLargeDataset();
|
|
163
|
-
|
|
164
|
-
profiler.createSnapshot('after-operation');
|
|
165
|
-
|
|
166
|
-
// 메모리 변화 분석
|
|
167
|
-
const comparison = profiler.compareSnapshots('before-operation', 'after-operation');
|
|
168
|
-
console.log('메모리 변화:', comparison.memoryDiff);
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
### 3.2 메모리 누수 방지
|
|
172
|
-
|
|
173
|
-
#### 객체 추적
|
|
174
|
-
|
|
175
|
-
```javascript
|
|
176
|
-
// 객체 생성/소멸 추적
|
|
177
|
-
const leakDetector = profiler.objectLeakDetector;
|
|
178
|
-
leakDetector.startTracking();
|
|
179
|
-
|
|
180
|
-
// 객체 생성 추적
|
|
181
|
-
leakDetector.trackObject('MyClass', 'create');
|
|
182
|
-
|
|
183
|
-
// 객체 소멸 추적
|
|
184
|
-
leakDetector.trackObject('MyClass', 'destroy');
|
|
185
|
-
|
|
186
|
-
// 누수 의심 객체 확인
|
|
187
|
-
const leaking = leakDetector.findLeakingObjects(1000);
|
|
188
|
-
if (leaking.length > 0) {
|
|
189
|
-
console.warn('메모리 누수 의심 객체:', leaking);
|
|
190
|
-
}
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
#### 가비지 컬렉션 최적화
|
|
194
|
-
|
|
195
|
-
```javascript
|
|
196
|
-
// 메모리 정리 필요 시 강제 GC 실행
|
|
197
|
-
const gcResult = profiler.forceGarbageCollection();
|
|
198
|
-
if (gcResult) {
|
|
199
|
-
console.log('GC로 해제된 메모리:', gcResult.freed);
|
|
200
|
-
}
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
### 3.3 메모리 최적화 제안 활용
|
|
204
|
-
|
|
205
|
-
```javascript
|
|
206
|
-
import { MemoryOptimizer } from './lib/memory-profiler.js';
|
|
207
|
-
|
|
208
|
-
// 대용량 파일 처리 최적화
|
|
209
|
-
const fileOptimization = await MemoryOptimizer.optimizeForLargeFiles('/path/to/large/file');
|
|
210
|
-
if (fileOptimization.recommendation === 'streaming') {
|
|
211
|
-
// 스트리밍 처리 사용
|
|
212
|
-
console.log('스트리밍 처리 권장:', fileOptimization.reason);
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
// 데이터 구조 최적화
|
|
216
|
-
const dataOptimization = MemoryOptimizer.optimizeDataStructures(largeArray);
|
|
217
|
-
if (dataOptimization.recommendation !== 'Current data structure is optimal') {
|
|
218
|
-
console.log('데이터 구조 최적화 제안:', dataOptimization);
|
|
219
|
-
}
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
## 4. 성능 벤치마킹
|
|
223
|
-
|
|
224
|
-
### 4.1 기본 벤치마크 실행
|
|
225
|
-
|
|
226
|
-
```javascript
|
|
227
|
-
import { PerformanceBenchmark, BenchmarkSuites } from './lib/performance-benchmark.js';
|
|
228
|
-
|
|
229
|
-
const benchmark = new PerformanceBenchmark({
|
|
230
|
-
iterations: 100,
|
|
231
|
-
warmupIterations: 10,
|
|
232
|
-
memoryProfiling: true
|
|
233
|
-
});
|
|
234
|
-
|
|
235
|
-
// 사전 정의된 테스트 스위트 실행
|
|
236
|
-
const fileOpsSuite = BenchmarkSuites.fileOperations();
|
|
237
|
-
const results = await benchmark.run(fileOpsSuite);
|
|
238
|
-
|
|
239
|
-
console.log('벤치마크 결과:', results.summary);
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
### 4.2 커스텀 벤치마크 작성
|
|
243
|
-
|
|
244
|
-
```javascript
|
|
245
|
-
// 커스텀 테스트 스위트 정의
|
|
246
|
-
const customSuite = {
|
|
247
|
-
name: 'Custom Performance Tests',
|
|
248
|
-
tests: [
|
|
249
|
-
{
|
|
250
|
-
name: 'Data Processing Performance',
|
|
251
|
-
fn: async () => {
|
|
252
|
-
const startTime = performance.now();
|
|
253
|
-
await processData(testData);
|
|
254
|
-
const endTime = performance.now();
|
|
255
|
-
return { duration: endTime - startTime };
|
|
256
|
-
}
|
|
257
|
-
},
|
|
258
|
-
{
|
|
259
|
-
name: 'Cache Hit Performance',
|
|
260
|
-
fn: async () => {
|
|
261
|
-
const cache = new GitHubAPICache();
|
|
262
|
-
await cache.init();
|
|
263
|
-
|
|
264
|
-
// 캐시에 데이터 저장
|
|
265
|
-
await cache.set('test-key', testData);
|
|
266
|
-
|
|
267
|
-
const startTime = performance.now();
|
|
268
|
-
const result = await cache.get('test-key');
|
|
269
|
-
const endTime = performance.now();
|
|
270
|
-
|
|
271
|
-
return { duration: endTime - startTime, throughput: 1 };
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
]
|
|
275
|
-
};
|
|
276
|
-
|
|
277
|
-
const customResults = await benchmark.run(customSuite);
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
### 4.3 부하 테스트
|
|
281
|
-
|
|
282
|
-
```javascript
|
|
283
|
-
// API 엔드포인트 부하 테스트
|
|
284
|
-
const loadTestResult = await benchmark.runLoadTest({
|
|
285
|
-
name: 'GitHub API Load Test',
|
|
286
|
-
target: 'https://api.github.com/repos/user/repo',
|
|
287
|
-
duration: 60000, // 1분
|
|
288
|
-
concurrency: 10, // 동시 10개 요청
|
|
289
|
-
rampUp: 5000 // 5초에 걸쳐 점진적 증가
|
|
290
|
-
});
|
|
291
|
-
|
|
292
|
-
console.log('부하 테스트 결과:', loadTestResult.metrics);
|
|
293
|
-
```
|
|
294
|
-
|
|
295
|
-
### 4.4 성능 회귀 감지
|
|
296
|
-
|
|
297
|
-
```javascript
|
|
298
|
-
// 이전 결과와 비교하여 성능 회귀 감지
|
|
299
|
-
const currentResult = await benchmark.run(testSuite);
|
|
300
|
-
const baselineResult = loadBaselineResults(); // 기준 결과 로드
|
|
301
|
-
|
|
302
|
-
const regression = benchmark.detectPerformanceRegression(currentResult, baselineResult);
|
|
303
|
-
if (regression.detected) {
|
|
304
|
-
console.error('성능 회귀 감지:', regression.issues);
|
|
305
|
-
} else {
|
|
306
|
-
console.log('성능 개선:', regression.improvements);
|
|
307
|
-
}
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
## 5. 통합 성능 최적화 워크플로우
|
|
311
|
-
|
|
312
|
-
### 5.1 전체 최적화 프로세스
|
|
313
|
-
|
|
314
|
-
```javascript
|
|
315
|
-
async function optimizeApplicationPerformance() {
|
|
316
|
-
// 1. 메모리 프로파일링 시작
|
|
317
|
-
const profiler = new MemoryProfiler();
|
|
318
|
-
profiler.startProfiling();
|
|
319
|
-
|
|
320
|
-
// 2. GitHub API 캐싱 설정
|
|
321
|
-
const githubClient = new OptimizedGitHubClient();
|
|
322
|
-
await githubClient.init();
|
|
323
|
-
|
|
324
|
-
// 3. 파일 배치 처리 설정
|
|
325
|
-
const fileProcessor = new FileBatchProcessor({
|
|
326
|
-
maxConcurrency: 5,
|
|
327
|
-
batchSize: 20
|
|
328
|
-
});
|
|
329
|
-
|
|
330
|
-
// 4. 성능 벤치마크 실행
|
|
331
|
-
const benchmark = new PerformanceBenchmark({
|
|
332
|
-
iterations: 50,
|
|
333
|
-
memoryProfiling: true
|
|
334
|
-
});
|
|
335
|
-
|
|
336
|
-
const suites = [
|
|
337
|
-
BenchmarkSuites.fileOperations(),
|
|
338
|
-
BenchmarkSuites.memoryOperations(),
|
|
339
|
-
BenchmarkSuites.githubAPICache()
|
|
340
|
-
];
|
|
341
|
-
|
|
342
|
-
const results = await Promise.all(
|
|
343
|
-
suites.map(suite => benchmark.run(suite))
|
|
344
|
-
);
|
|
345
|
-
|
|
346
|
-
// 5. 결과 분석 및 보고서 생성
|
|
347
|
-
profiler.stopProfiling();
|
|
348
|
-
const memoryReport = profiler.generateReport();
|
|
349
|
-
const suggestions = profiler.getOptimizationSuggestions();
|
|
350
|
-
|
|
351
|
-
// 6. 보고서 저장
|
|
352
|
-
await benchmark.saveReport('./performance-report.json');
|
|
353
|
-
await benchmark.generateHTMLReport('./performance-report.html');
|
|
354
|
-
await profiler.saveReport('./memory-report.json');
|
|
355
|
-
|
|
356
|
-
return {
|
|
357
|
-
performanceResults: results,
|
|
358
|
-
memoryReport,
|
|
359
|
-
suggestions,
|
|
360
|
-
githubStats: githubClient.getStats(),
|
|
361
|
-
fileProcessorStats: fileProcessor.getStats()
|
|
362
|
-
};
|
|
363
|
-
}
|
|
364
|
-
```
|
|
365
|
-
|
|
366
|
-
### 5.2 CI/CD 통합
|
|
367
|
-
|
|
368
|
-
```javascript
|
|
369
|
-
// CI/CD 파이프라인에서 성능 테스트 실행
|
|
370
|
-
async function runPerformanceTests() {
|
|
371
|
-
const benchmark = new PerformanceBenchmark();
|
|
372
|
-
const results = await benchmark.run(BenchmarkSuites.fileOperations());
|
|
373
|
-
|
|
374
|
-
// 성능 기준 확인
|
|
375
|
-
const avgDuration = results.summary.averageDuration;
|
|
376
|
-
const threshold = 1000; // 1초
|
|
377
|
-
|
|
378
|
-
if (avgDuration > threshold) {
|
|
379
|
-
throw new Error(`Performance regression detected: ${avgDuration}ms > ${threshold}ms`);
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
console.log('✅ Performance tests passed');
|
|
383
|
-
return results;
|
|
384
|
-
}
|
|
385
|
-
```
|
|
386
|
-
|
|
387
|
-
## 6. 모니터링 및 경고
|
|
388
|
-
|
|
389
|
-
### 6.1 실시간 모니터링 설정
|
|
390
|
-
|
|
391
|
-
```javascript
|
|
392
|
-
// 프로덕션 환경에서 실시간 모니터링
|
|
393
|
-
const productionProfiler = new MemoryProfiler({
|
|
394
|
-
samplingInterval: 5000, // 5초마다
|
|
395
|
-
heapThreshold: 500 * 1024 * 1024, // 500MB
|
|
396
|
-
alertCallback: (alerts) => {
|
|
397
|
-
// 알림 시스템으로 경고 전송
|
|
398
|
-
alerts.forEach(alert => {
|
|
399
|
-
sendAlert(`Memory Alert: ${alert.type}`, alert);
|
|
400
|
-
});
|
|
401
|
-
}
|
|
402
|
-
});
|
|
403
|
-
|
|
404
|
-
productionProfiler.startProfiling();
|
|
405
|
-
```
|
|
406
|
-
|
|
407
|
-
### 6.2 성능 대시보드
|
|
408
|
-
|
|
409
|
-
```javascript
|
|
410
|
-
// 성능 메트릭 대시보드용 데이터 생성
|
|
411
|
-
function generateDashboardData() {
|
|
412
|
-
return {
|
|
413
|
-
timestamp: Date.now(),
|
|
414
|
-
memory: process.memoryUsage(),
|
|
415
|
-
cache: githubClient.getStats(),
|
|
416
|
-
fileProcessor: fileProcessor.getStats(),
|
|
417
|
-
uptime: process.uptime()
|
|
418
|
-
};
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
// 주기적으로 대시보드 데이터 업데이트
|
|
422
|
-
setInterval(() => {
|
|
423
|
-
const dashboardData = generateDashboardData();
|
|
424
|
-
updateDashboard(dashboardData);
|
|
425
|
-
}, 30000); // 30초마다
|
|
426
|
-
```
|
|
427
|
-
|
|
428
|
-
## 7. 환경별 설정 가이드
|
|
429
|
-
|
|
430
|
-
### 7.1 개발 환경
|
|
431
|
-
|
|
432
|
-
```javascript
|
|
433
|
-
const developmentConfig = {
|
|
434
|
-
github: {
|
|
435
|
-
cacheDir: '.aiwf/cache-dev',
|
|
436
|
-
ttl: 60000, // 1분
|
|
437
|
-
rateLimitPerMinute: 30
|
|
438
|
-
},
|
|
439
|
-
fileProcessor: {
|
|
440
|
-
maxConcurrency: 2,
|
|
441
|
-
batchSize: 10
|
|
442
|
-
},
|
|
443
|
-
memoryProfiler: {
|
|
444
|
-
samplingInterval: 2000, // 2초
|
|
445
|
-
alertThreshold: 100 * 1024 * 1024 // 100MB
|
|
446
|
-
}
|
|
447
|
-
};
|
|
448
|
-
```
|
|
449
|
-
|
|
450
|
-
### 7.2 프로덕션 환경
|
|
451
|
-
|
|
452
|
-
```javascript
|
|
453
|
-
const productionConfig = {
|
|
454
|
-
github: {
|
|
455
|
-
cacheDir: '.aiwf/cache',
|
|
456
|
-
ttl: 300000, // 5분
|
|
457
|
-
rateLimitPerMinute: 60
|
|
458
|
-
},
|
|
459
|
-
fileProcessor: {
|
|
460
|
-
maxConcurrency: 10,
|
|
461
|
-
batchSize: 50
|
|
462
|
-
},
|
|
463
|
-
memoryProfiler: {
|
|
464
|
-
samplingInterval: 5000, // 5초
|
|
465
|
-
alertThreshold: 500 * 1024 * 1024 // 500MB
|
|
466
|
-
}
|
|
467
|
-
};
|
|
468
|
-
```
|
|
469
|
-
|
|
470
|
-
## 8. 문제 해결 가이드
|
|
471
|
-
|
|
472
|
-
### 8.1 메모리 사용량 급증
|
|
473
|
-
|
|
474
|
-
```javascript
|
|
475
|
-
// 메모리 사용량이 급증하는 경우
|
|
476
|
-
if (currentMemoryUsage > threshold) {
|
|
477
|
-
// 1. 강제 가비지 컬렉션
|
|
478
|
-
const gcResult = profiler.forceGarbageCollection();
|
|
479
|
-
|
|
480
|
-
// 2. 캐시 정리
|
|
481
|
-
await githubClient.cleanup();
|
|
482
|
-
|
|
483
|
-
// 3. 임시 파일 정리
|
|
484
|
-
await MemoryOptimizer.cleanupTemporaryFiles();
|
|
485
|
-
|
|
486
|
-
// 4. 배치 처리 큐 정리
|
|
487
|
-
fileProcessor.clearQueue();
|
|
488
|
-
}
|
|
489
|
-
```
|
|
490
|
-
|
|
491
|
-
### 8.2 GitHub API Rate Limit 초과
|
|
492
|
-
|
|
493
|
-
```javascript
|
|
494
|
-
// Rate limit 초과 시 대응
|
|
495
|
-
client.on('rateLimit', async (resetTime) => {
|
|
496
|
-
console.log(`Rate limit exceeded. Waiting until ${new Date(resetTime)}`);
|
|
497
|
-
|
|
498
|
-
// 캐시된 데이터 우선 사용
|
|
499
|
-
const cachedData = await cache.get(url);
|
|
500
|
-
if (cachedData) {
|
|
501
|
-
return cachedData;
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
// Reset 시간까지 대기
|
|
505
|
-
const waitTime = resetTime - Date.now();
|
|
506
|
-
await new Promise(resolve => setTimeout(resolve, waitTime));
|
|
507
|
-
});
|
|
508
|
-
```
|
|
509
|
-
|
|
510
|
-
### 8.3 파일 시스템 성능 저하
|
|
511
|
-
|
|
512
|
-
```javascript
|
|
513
|
-
// 파일 시스템 성능 저하 시
|
|
514
|
-
if (fileProcessor.getStats().averageProcessingTime > 5000) { // 5초 이상
|
|
515
|
-
// 1. 동시성 감소
|
|
516
|
-
fileProcessor.maxConcurrency = Math.max(1, fileProcessor.maxConcurrency / 2);
|
|
517
|
-
|
|
518
|
-
// 2. 배치 크기 감소
|
|
519
|
-
fileProcessor.batchSize = Math.max(5, fileProcessor.batchSize / 2);
|
|
520
|
-
|
|
521
|
-
// 3. 임시 파일 정리
|
|
522
|
-
await MemoryOptimizer.cleanupTemporaryFiles();
|
|
523
|
-
}
|
|
524
|
-
```
|
|
525
|
-
|
|
526
|
-
## 9. 베스트 프랙티스
|
|
527
|
-
|
|
528
|
-
### 9.1 코드 레벨 최적화
|
|
529
|
-
|
|
530
|
-
1. **비동기 처리 활용**: Promise.all() 대신 Promise.allSettled() 사용
|
|
531
|
-
2. **메모리 효율적인 데이터 구조**: 큰 데이터셋에는 Map/Set 사용
|
|
532
|
-
3. **스트리밍 처리**: 큰 파일은 항상 스트림으로 처리
|
|
533
|
-
4. **캐시 우선 사용**: API 호출 전 항상 캐시 확인
|
|
534
|
-
|
|
535
|
-
### 9.2 아키텍처 레벨 최적화
|
|
536
|
-
|
|
537
|
-
1. **배치 처리 우선**: 개별 작업보다 배치 처리 사용
|
|
538
|
-
2. **적절한 캐시 TTL**: 데이터 성격에 맞는 TTL 설정
|
|
539
|
-
3. **동시성 제어**: 시스템 리소스에 맞는 동시성 수준 설정
|
|
540
|
-
4. **모니터링 필수**: 프로덕션에서 항상 성능 모니터링
|
|
541
|
-
|
|
542
|
-
### 9.3 운영 레벨 최적화
|
|
543
|
-
|
|
544
|
-
1. **정기적인 정리**: 캐시, 로그, 임시 파일 정기 정리
|
|
545
|
-
2. **성능 기준 설정**: 명확한 성능 SLA 정의
|
|
546
|
-
3. **알림 시스템**: 성능 저하 시 즉시 알림
|
|
547
|
-
4. **지속적인 개선**: 정기적인 성능 벤치마크 실행
|
|
548
|
-
|
|
549
|
-
## 결론
|
|
550
|
-
|
|
551
|
-
AIWF의 성능 최적화는 GitHub API 캐싱, 파일 배치 처리, 메모리 관리, 성능 벤치마킹의 4가지 핵심 영역에서 이루어집니다. 이 가이드라인을 따라 구현하면 대규모 프로젝트에서도 안정적이고 효율적인 성능을 유지할 수 있습니다.
|
|
552
|
-
|
|
553
|
-
성능 최적화는 지속적인 과정이므로, 정기적인 모니터링과 벤치마킹을 통해 시스템을 개선해 나가는 것이 중요합니다.
|
package/docs/PRD.ko.md
DELETED
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
# AIWF - AI 워크플로우 프레임워크
|
|
2
|
-
|
|
3
|
-
_버전: 0.3.0_
|
|
4
|
-
|
|
5
|
-
## 개요
|
|
6
|
-
|
|
7
|
-
모든 프로젝트에 AIWF (AI 워크플로우 프레임워크)를 설치하기 위한 포괄적인 `npx` 실행 가능 커맨드 라인 도구입니다. AI 지원 프로젝트 관리를 위한 구조화된 디렉토리 레이아웃과 커맨드 라인 도구를 제공하며, 다국어(영어 및 한국어)를 완벽하게 지원합니다.
|
|
8
|
-
|
|
9
|
-
## 핵심 기능
|
|
10
|
-
|
|
11
|
-
### 설치 명령어
|
|
12
|
-
|
|
13
|
-
이 도구는 `npx`를 통해 실행됩니다:
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
npx aiwf # 대화형 언어 선택
|
|
17
|
-
npx aiwf --force # 프롬프트 건너뛰기 (기본값: 한국어)
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
### 주요 특징
|
|
21
|
-
|
|
22
|
-
1. **다국어 지원**:
|
|
23
|
-
- 대화형 언어 선택 (영어/한국어)
|
|
24
|
-
- 언어별 명령어 파일 및 문서
|
|
25
|
-
- 현지화된 사용자 인터페이스 및 메시지
|
|
26
|
-
|
|
27
|
-
2. **디렉토리 구조 생성**:
|
|
28
|
-
- 문서, 요구사항, 스프린트 등을 위한 표준화된 하위 디렉토리를 포함하는 `.aiwf/` 디렉토리를 초기화합니다
|
|
29
|
-
- 사용자 지정 Claude 명령어를 위한 `.claude/commands/aiwf/` 디렉토리를 설정합니다
|
|
30
|
-
- Cursor 및 Windsurf용 IDE별 규칙을 구성합니다
|
|
31
|
-
|
|
32
|
-
3. **GitHub에서 파일 가져오기**:
|
|
33
|
-
- GitHub의 `aiwf/aiwf` 리포지토리에서 최신 프레임워크 파일을 다운로드합니다
|
|
34
|
-
- `claude-code/aiwf/ko/` 또는 `claude-code/aiwf/en/`에서 언어별 파일을 가져옵니다
|
|
35
|
-
- 명령어, 문서 템플릿, 프로젝트 매니페스트를 설치합니다
|
|
36
|
-
|
|
37
|
-
4. **기존 설치 처리**:
|
|
38
|
-
- AIWF 프레임워크가 이미 존재하는지 감지합니다
|
|
39
|
-
- 사용자에게 **업데이트**, **건너뛰기**, 또는 **취소**를 요청합니다
|
|
40
|
-
- 업데이트 프로세스는 사용자가 생성한 파일(작업, 스프린트)을 보존하면서 명령어 스크립트와 `CLAUDE.md` 문서를 업데이트합니다
|
|
41
|
-
- 덮어쓴 파일은 타임스탬프가 포함된 `.bak` 확장자로 자동 백업합니다
|
|
42
|
-
|
|
43
|
-
5. **IDE 통합**:
|
|
44
|
-
- Cursor IDE용 규칙을 자동으로 변환하고 설치합니다 (`.mdc` 형식)
|
|
45
|
-
- 일반 마크다운 규칙으로 Windsurf IDE를 지원합니다
|
|
46
|
-
- Claude Code와의 원활한 통합
|
|
47
|
-
|
|
48
|
-
## 기술적 접근 방식
|
|
49
|
-
|
|
50
|
-
- **Node.js 스크립트**: Node.js로 구축된 단일 실행 스크립트입니다.
|
|
51
|
-
- **의존성**: 커맨드 라인 인터페이스를 향상시키기 위해 외부 라이브러리를 사용합니다:
|
|
52
|
-
- `commander`: 커맨드 라인 인수 구문 분석용.
|
|
53
|
-
- `ora`: 로딩 스피너 표시용.
|
|
54
|
-
- `prompts`: 대화형 사용자 프롬프트용.
|
|
55
|
-
- `chalk`: 콘솔 출력에 색상 추가용.
|
|
56
|
-
- **GitHub Fetching**: GitHub API를 사용하여 디렉토리 내용을 나열하고, `raw.githubusercontent.com` 소스에서 직접 파일을 다운로드합니다.
|
|
57
|
-
|
|
58
|
-
## 설치 흐름
|
|
59
|
-
|
|
60
|
-
1. 환영 메시지가 표시됩니다
|
|
61
|
-
2. 언어 선택 프롬프트 (영어/한국어) - `--force` 플래그 사용 시 제외
|
|
62
|
-
3. 스크립트가 기존 설치를 확인합니다
|
|
63
|
-
4. 설치가 존재하면 사용자에게 작업(업데이트, 건너뛰기, 취소)을 선택하라는 메시지를 표시합니다
|
|
64
|
-
5. 진행 시, 스피너가 GitHub에서 파일을 가져오는 중임을 나타냅니다
|
|
65
|
-
6. 선택한 언어에 따라 필요한 디렉토리 구조가 생성됩니다
|
|
66
|
-
7. 언어별 디렉토리에서 프레임워크 파일(매니페스트, 템플릿, 문서, 명령어)이 다운로드됩니다
|
|
67
|
-
8. IDE 규칙이 처리되고 설치됩니다 (Cursor/Windsurf)
|
|
68
|
-
9. 시작을 위한 다음 단계와 함께 성공 메시지가 표시됩니다
|
|
69
|
-
10. 단계가 실패하면 오류 메시지가 표시되고 가능한 경우 백업에서 기존 파일이 복원됩니다
|
|
70
|
-
|
|
71
|
-
## 생성되는 파일 구조
|
|
72
|
-
|
|
73
|
-
설치 프로그램은 프로젝트에 다음 구조를 생성합니다:
|
|
74
|
-
|
|
75
|
-
```
|
|
76
|
-
your_project/
|
|
77
|
-
├── .aiwf/ # AIWF 프로젝트 관리 구조
|
|
78
|
-
│ ├── 00_PROJECT_MANIFEST.md # 중앙 프로젝트 추적
|
|
79
|
-
│ ├── 01_PROJECT_DOCS/ # 프로젝트 문서
|
|
80
|
-
│ │ └── ARCHITECTURE.md # 시스템 아키텍처 문서
|
|
81
|
-
│ ├── 02_REQUIREMENTS/ # 마일스톤 기반 요구사항
|
|
82
|
-
│ │ └── M01_*/ # 마일스톤 폴더
|
|
83
|
-
│ ├── 03_SPRINTS/ # 스프린트 실행 폴더
|
|
84
|
-
│ │ └── S01_*/ # 태스크가 포함된 스프린트 폴더
|
|
85
|
-
│ ├── 04_GENERAL_TASKS/ # 스프린트 외 태스크
|
|
86
|
-
│ ├── 98_PROMPTS/ # 유용한 프롬프트
|
|
87
|
-
│ └── 99_TEMPLATES/ # 문서 템플릿
|
|
88
|
-
├── .claude/commands/aiwf/ # Claude Code 사용자 정의 명령어
|
|
89
|
-
│ ├── initialize.md # 프로젝트 초기화
|
|
90
|
-
│ ├── prime_context.md # 컨텍스트 로딩
|
|
91
|
-
│ ├── aiwf_create_milestone_plan.md # 마일스톤 계획
|
|
92
|
-
│ ├── create_sprints_from_milestone.md # 스프린트 생성
|
|
93
|
-
│ ├── do_task.md # 태스크 실행
|
|
94
|
-
│ ├── commit.md # Git 커밋 워크플로우
|
|
95
|
-
│ ├── yolo.md # 자율 실행
|
|
96
|
-
│ └── ... (20개 이상의 추가 명령어)
|
|
97
|
-
├── .cursor/rules/ # Cursor IDE 통합 (감지된 경우)
|
|
98
|
-
│ ├── code-style-guide.mdc
|
|
99
|
-
│ ├── coding-principles.mdc
|
|
100
|
-
│ └── ... (변환된 규칙)
|
|
101
|
-
└── .windsurf/rules/ # Windsurf IDE 통합 (감지된 경우)
|
|
102
|
-
├── code-style-guide.md
|
|
103
|
-
├── coding-principles.md
|
|
104
|
-
└── ... (일반 마크다운 규칙)
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
## 상세 기능
|
|
108
|
-
|
|
109
|
-
### 다국어 지원
|
|
110
|
-
- **언어 선택**: 설치 중 대화형 프롬프트
|
|
111
|
-
- **지원 언어**: 영어 및 한국어
|
|
112
|
-
- **언어별 파일**: 선택한 언어에 따라 명령어와 문서가 설치됨
|
|
113
|
-
- **기본값**: `--force` 플래그 사용 시 한국어로 기본 설정
|
|
114
|
-
|
|
115
|
-
### 명령어 시스템
|
|
116
|
-
이 프레임워크는 AI 지원 개발을 위한 25개 이상의 전문 명령어를 포함합니다:
|
|
117
|
-
- **설정**: `initialize`, `prime`, `prime_context`
|
|
118
|
-
- **계획**: `aiwf_create_milestone_plan`, `aiwf_create_sprints_from_milestone`, `aiwf_create_sprint_tasks`
|
|
119
|
-
- **개발**: `do_task`, `commit`, `test`, `code_review`
|
|
120
|
-
- **자동화**: `yolo` (자율 태스크 실행)
|
|
121
|
-
- **GitHub 통합**: `issue_create`, `pr_create`
|
|
122
|
-
- **분석**: `ultrathink_*`, `mermaid`, `project_review`
|
|
123
|
-
|
|
124
|
-
### IDE 통합
|
|
125
|
-
- **Cursor IDE**: 프론트매터가 포함된 `.mdc` 형식으로 규칙 변환
|
|
126
|
-
- **Windsurf IDE**: 일반 마크다운 형식 사용
|
|
127
|
-
- **Claude Code**: 사용자 정의 명령어와의 네이티브 통합
|
|
128
|
-
|
|
129
|
-
## 현재 상태 (v0.3.0)
|
|
130
|
-
|
|
131
|
-
### 완료된 기능
|
|
132
|
-
- ✅ NPM 패키지 배포 (`npx aiwf`)
|
|
133
|
-
- ✅ 다국어 지원 (한국어/영어)
|
|
134
|
-
- ✅ IDE 통합 (Cursor, Windsurf)
|
|
135
|
-
- ✅ 25개 이상의 Claude Code 명령어
|
|
136
|
-
- ✅ 백업/복원 메커니즘
|
|
137
|
-
- ✅ GitHub API 통합
|
|
138
|
-
|
|
139
|
-
### 알려진 이슈
|
|
140
|
-
- `update_docs` 명령어 파일 누락 (`aiwf_docs.md`만 존재)
|
|
141
|
-
- GitHub 저장소 URL이 `aiwf/aiwf`로 통일됨
|
|
142
|
-
|
|
143
|
-
### 로드맵
|
|
144
|
-
- [ ] 오프라인 설치 옵션
|
|
145
|
-
- [ ] 추가 언어 지원
|
|
146
|
-
- [ ] VS Code 확장
|
|
147
|
-
- [ ] 향상된 프로젝트 템플릿
|
|
148
|
-
- [ ] 사용자 정의 명령어를 위한 커뮤니티 마켓플레이스
|