@walwal-harness/cli 6.1.6 → 7.1.1
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/HR-Resource/academic-academic-anthropologist/SKILL.md +142 -0
- package/HR-Resource/academic-academic-geographer/SKILL.md +144 -0
- package/HR-Resource/academic-academic-historian/SKILL.md +140 -0
- package/HR-Resource/academic-academic-narratologist/SKILL.md +135 -0
- package/HR-Resource/academic-academic-psychologist/SKILL.md +135 -0
- package/HR-Resource/brick-office/SKILL.md +20 -0
- package/HR-Resource/cdo/SKILL.md +33 -0
- package/HR-Resource/ceo/SKILL.md +47 -0
- package/HR-Resource/coo/SKILL.md +36 -0
- package/HR-Resource/cqo/SKILL.md +33 -0
- package/HR-Resource/cto/SKILL.md +36 -0
- package/HR-Resource/design-design-brand-guardian/SKILL.md +339 -0
- package/HR-Resource/design-design-image-prompt-engineer/SKILL.md +253 -0
- package/HR-Resource/design-design-inclusive-visuals-specialist/SKILL.md +88 -0
- package/HR-Resource/design-design-ui-designer/SKILL.md +400 -0
- package/HR-Resource/design-design-ux-architect/SKILL.md +486 -0
- package/HR-Resource/design-design-ux-researcher/SKILL.md +346 -0
- package/HR-Resource/design-design-visual-storyteller/SKILL.md +166 -0
- package/HR-Resource/design-design-whimsy-injector/SKILL.md +455 -0
- package/HR-Resource/engineering-engineering-ai-data-remediation-engineer/SKILL.md +227 -0
- package/HR-Resource/engineering-engineering-ai-engineer/SKILL.md +163 -0
- package/HR-Resource/engineering-engineering-autonomous-optimization-architect/SKILL.md +124 -0
- package/HR-Resource/engineering-engineering-backend-architect/SKILL.md +252 -0
- package/HR-Resource/engineering-engineering-cms-developer/SKILL.md +553 -0
- package/HR-Resource/engineering-engineering-code-reviewer/SKILL.md +93 -0
- package/HR-Resource/engineering-engineering-codebase-onboarding-engineer/SKILL.md +190 -0
- package/HR-Resource/engineering-engineering-data-engineer/SKILL.md +323 -0
- package/HR-Resource/engineering-engineering-database-optimizer/SKILL.md +193 -0
- package/HR-Resource/engineering-engineering-devops-automator/SKILL.md +393 -0
- package/HR-Resource/engineering-engineering-email-intelligence-engineer/SKILL.md +370 -0
- package/HR-Resource/engineering-engineering-embedded-firmware-engineer/SKILL.md +190 -0
- package/HR-Resource/engineering-engineering-feishu-integration-developer/SKILL.md +615 -0
- package/HR-Resource/engineering-engineering-filament-optimization-specialist/SKILL.md +300 -0
- package/HR-Resource/engineering-engineering-frontend-developer/SKILL.md +242 -0
- package/HR-Resource/engineering-engineering-git-workflow-master/SKILL.md +101 -0
- package/HR-Resource/engineering-engineering-incident-response-commander/SKILL.md +461 -0
- package/HR-Resource/engineering-engineering-minimal-change-engineer/SKILL.md +224 -0
- package/HR-Resource/engineering-engineering-mobile-app-builder/SKILL.md +510 -0
- package/HR-Resource/engineering-engineering-rapid-prototyper/SKILL.md +479 -0
- package/HR-Resource/engineering-engineering-security-engineer/SKILL.md +321 -0
- package/HR-Resource/engineering-engineering-senior-developer/SKILL.md +193 -0
- package/HR-Resource/engineering-engineering-software-architect/SKILL.md +98 -0
- package/HR-Resource/engineering-engineering-solidity-smart-contract-engineer/SKILL.md +539 -0
- package/HR-Resource/engineering-engineering-sre/SKILL.md +107 -0
- package/HR-Resource/engineering-engineering-technical-writer/SKILL.md +410 -0
- package/HR-Resource/engineering-engineering-threat-detection-engineer/SKILL.md +551 -0
- package/HR-Resource/engineering-engineering-voice-ai-integration-engineer/SKILL.md +578 -0
- package/HR-Resource/engineering-engineering-wechat-mini-program-developer/SKILL.md +367 -0
- package/HR-Resource/finance-finance-bookkeeper-controller/SKILL.md +277 -0
- package/HR-Resource/finance-finance-financial-analyst/SKILL.md +251 -0
- package/HR-Resource/finance-finance-fpa-analyst/SKILL.md +280 -0
- package/HR-Resource/finance-finance-investment-researcher/SKILL.md +289 -0
- package/HR-Resource/finance-finance-tax-strategist/SKILL.md +256 -0
- package/HR-Resource/game-development-blender-blender-addon-engineer/SKILL.md +251 -0
- package/HR-Resource/game-development-game-audio-engineer/SKILL.md +281 -0
- package/HR-Resource/game-development-game-designer/SKILL.md +184 -0
- package/HR-Resource/game-development-godot-godot-gameplay-scripter/SKILL.md +351 -0
- package/HR-Resource/game-development-godot-godot-multiplayer-engineer/SKILL.md +314 -0
- package/HR-Resource/game-development-godot-godot-shader-developer/SKILL.md +283 -0
- package/HR-Resource/game-development-level-designer/SKILL.md +225 -0
- package/HR-Resource/game-development-narrative-designer/SKILL.md +260 -0
- package/HR-Resource/game-development-roblox-studio-roblox-avatar-creator/SKILL.md +314 -0
- package/HR-Resource/game-development-roblox-studio-roblox-experience-designer/SKILL.md +322 -0
- package/HR-Resource/game-development-roblox-studio-roblox-systems-scripter/SKILL.md +342 -0
- package/HR-Resource/game-development-technical-artist/SKILL.md +246 -0
- package/HR-Resource/game-development-unity-unity-architect/SKILL.md +288 -0
- package/HR-Resource/game-development-unity-unity-editor-tool-developer/SKILL.md +327 -0
- package/HR-Resource/game-development-unity-unity-multiplayer-engineer/SKILL.md +338 -0
- package/HR-Resource/game-development-unity-unity-shader-graph-artist/SKILL.md +286 -0
- package/HR-Resource/game-development-unreal-engine-unreal-multiplayer-architect/SKILL.md +330 -0
- package/HR-Resource/game-development-unreal-engine-unreal-systems-engineer/SKILL.md +327 -0
- package/HR-Resource/game-development-unreal-engine-unreal-technical-artist/SKILL.md +273 -0
- package/HR-Resource/game-development-unreal-engine-unreal-world-builder/SKILL.md +290 -0
- package/HR-Resource/hiring/SKILL.md +28 -0
- package/HR-Resource/index.json +747 -0
- package/HR-Resource/integrations-mcp-memory-backend-architect-with-memory/SKILL.md +264 -0
- package/HR-Resource/marketing-marketing-agentic-search-optimizer/SKILL.md +328 -0
- package/HR-Resource/marketing-marketing-ai-citation-strategist/SKILL.md +187 -0
- package/HR-Resource/marketing-marketing-app-store-optimizer/SKILL.md +338 -0
- package/HR-Resource/marketing-marketing-baidu-seo-specialist/SKILL.md +243 -0
- package/HR-Resource/marketing-marketing-bilibili-content-strategist/SKILL.md +216 -0
- package/HR-Resource/marketing-marketing-book-co-author/SKILL.md +127 -0
- package/HR-Resource/marketing-marketing-carousel-growth-engine/SKILL.md +216 -0
- package/HR-Resource/marketing-marketing-china-ecommerce-operator/SKILL.md +300 -0
- package/HR-Resource/marketing-marketing-china-market-localization-strategist/SKILL.md +300 -0
- package/HR-Resource/marketing-marketing-content-creator/SKILL.md +71 -0
- package/HR-Resource/marketing-marketing-cross-border-ecommerce/SKILL.md +276 -0
- package/HR-Resource/marketing-marketing-douyin-strategist/SKILL.md +166 -0
- package/HR-Resource/marketing-marketing-growth-hacker/SKILL.md +71 -0
- package/HR-Resource/marketing-marketing-instagram-curator/SKILL.md +130 -0
- package/HR-Resource/marketing-marketing-kuaishou-strategist/SKILL.md +240 -0
- package/HR-Resource/marketing-marketing-linkedin-content-creator/SKILL.md +230 -0
- package/HR-Resource/marketing-marketing-livestream-commerce-coach/SKILL.md +322 -0
- package/HR-Resource/marketing-marketing-podcast-strategist/SKILL.md +294 -0
- package/HR-Resource/marketing-marketing-private-domain-operator/SKILL.md +325 -0
- package/HR-Resource/marketing-marketing-reddit-community-builder/SKILL.md +140 -0
- package/HR-Resource/marketing-marketing-seo-specialist/SKILL.md +338 -0
- package/HR-Resource/marketing-marketing-short-video-editing-coach/SKILL.md +429 -0
- package/HR-Resource/marketing-marketing-social-media-strategist/SKILL.md +142 -0
- package/HR-Resource/marketing-marketing-tiktok-strategist/SKILL.md +142 -0
- package/HR-Resource/marketing-marketing-twitter-engager/SKILL.md +143 -0
- package/HR-Resource/marketing-marketing-video-optimization-specialist/SKILL.md +136 -0
- package/HR-Resource/marketing-marketing-wechat-official-account/SKILL.md +162 -0
- package/HR-Resource/marketing-marketing-weibo-strategist/SKILL.md +257 -0
- package/HR-Resource/marketing-marketing-xiaohongshu-specialist/SKILL.md +155 -0
- package/HR-Resource/marketing-marketing-zhihu-strategist/SKILL.md +179 -0
- package/HR-Resource/ops/SKILL.md +46 -0
- package/HR-Resource/paid-media-paid-media-auditor/SKILL.md +88 -0
- package/HR-Resource/paid-media-paid-media-creative-strategist/SKILL.md +88 -0
- package/HR-Resource/paid-media-paid-media-paid-social-strategist/SKILL.md +88 -0
- package/HR-Resource/paid-media-paid-media-ppc-strategist/SKILL.md +88 -0
- package/HR-Resource/paid-media-paid-media-programmatic-buyer/SKILL.md +88 -0
- package/HR-Resource/paid-media-paid-media-search-query-analyst/SKILL.md +88 -0
- package/HR-Resource/paid-media-paid-media-tracking-specialist/SKILL.md +88 -0
- package/HR-Resource/product-product-behavioral-nudge-engine/SKILL.md +97 -0
- package/HR-Resource/product-product-feedback-synthesizer/SKILL.md +136 -0
- package/HR-Resource/product-product-manager/SKILL.md +486 -0
- package/HR-Resource/product-product-sprint-prioritizer/SKILL.md +171 -0
- package/HR-Resource/product-product-trend-researcher/SKILL.md +176 -0
- package/HR-Resource/project-management-project-management-experiment-tracker/SKILL.md +215 -0
- package/HR-Resource/project-management-project-management-jira-workflow-steward/SKILL.md +247 -0
- package/HR-Resource/project-management-project-management-project-shepherd/SKILL.md +211 -0
- package/HR-Resource/project-management-project-management-studio-operations/SKILL.md +217 -0
- package/HR-Resource/project-management-project-management-studio-producer/SKILL.md +220 -0
- package/HR-Resource/project-management-project-manager-senior/SKILL.md +152 -0
- package/HR-Resource/resource-manager/SKILL.md +23 -0
- package/HR-Resource/sales-sales-account-strategist/SKILL.md +244 -0
- package/HR-Resource/sales-sales-coach/SKILL.md +288 -0
- package/HR-Resource/sales-sales-deal-strategist/SKILL.md +197 -0
- package/HR-Resource/sales-sales-discovery-coach/SKILL.md +242 -0
- package/HR-Resource/sales-sales-engineer/SKILL.md +199 -0
- package/HR-Resource/sales-sales-outbound-strategist/SKILL.md +218 -0
- package/HR-Resource/sales-sales-pipeline-analyst/SKILL.md +284 -0
- package/HR-Resource/sales-sales-proposal-strategist/SKILL.md +234 -0
- package/HR-Resource/spatial-computing-macos-spatial-metal-engineer/SKILL.md +354 -0
- package/HR-Resource/spatial-computing-terminal-integration-specialist/SKILL.md +87 -0
- package/HR-Resource/spatial-computing-visionos-spatial-engineer/SKILL.md +71 -0
- package/HR-Resource/spatial-computing-xr-cockpit-interaction-specialist/SKILL.md +49 -0
- package/HR-Resource/spatial-computing-xr-immersive-developer/SKILL.md +49 -0
- package/HR-Resource/spatial-computing-xr-interface-architect/SKILL.md +49 -0
- package/HR-Resource/specialized-accounts-payable-agent/SKILL.md +202 -0
- package/HR-Resource/specialized-agentic-identity-trust/SKILL.md +404 -0
- package/HR-Resource/specialized-agents-orchestrator/SKILL.md +384 -0
- package/HR-Resource/specialized-automation-governance-architect/SKILL.md +233 -0
- package/HR-Resource/specialized-blockchain-security-auditor/SKILL.md +480 -0
- package/HR-Resource/specialized-compliance-auditor/SKILL.md +175 -0
- package/HR-Resource/specialized-corporate-training-designer/SKILL.md +209 -0
- package/HR-Resource/specialized-customer-service/SKILL.md +415 -0
- package/HR-Resource/specialized-data-consolidation-agent/SKILL.md +77 -0
- package/HR-Resource/specialized-government-digital-presales-consultant/SKILL.md +380 -0
- package/HR-Resource/specialized-healthcare-customer-service/SKILL.md +406 -0
- package/HR-Resource/specialized-healthcare-marketing-compliance/SKILL.md +412 -0
- package/HR-Resource/specialized-hospitality-guest-services/SKILL.md +620 -0
- package/HR-Resource/specialized-hr-onboarding/SKILL.md +468 -0
- package/HR-Resource/specialized-identity-graph-operator/SKILL.md +277 -0
- package/HR-Resource/specialized-language-translator/SKILL.md +281 -0
- package/HR-Resource/specialized-legal-billing-time-tracking/SKILL.md +586 -0
- package/HR-Resource/specialized-legal-client-intake/SKILL.md +509 -0
- package/HR-Resource/specialized-legal-document-review/SKILL.md +471 -0
- package/HR-Resource/specialized-loan-officer-assistant/SKILL.md +572 -0
- package/HR-Resource/specialized-lsp-index-engineer/SKILL.md +331 -0
- package/HR-Resource/specialized-real-estate-buyer-seller/SKILL.md +613 -0
- package/HR-Resource/specialized-recruitment-specialist/SKILL.md +526 -0
- package/HR-Resource/specialized-report-distribution-agent/SKILL.md +82 -0
- package/HR-Resource/specialized-retail-customer-returns/SKILL.md +583 -0
- package/HR-Resource/specialized-sales-data-extraction-agent/SKILL.md +84 -0
- package/HR-Resource/specialized-sales-outreach/SKILL.md +442 -0
- package/HR-Resource/specialized-specialized-chief-of-staff/SKILL.md +296 -0
- package/HR-Resource/specialized-specialized-civil-engineer/SKILL.md +373 -0
- package/HR-Resource/specialized-specialized-cultural-intelligence-strategist/SKILL.md +105 -0
- package/HR-Resource/specialized-specialized-developer-advocate/SKILL.md +334 -0
- package/HR-Resource/specialized-specialized-document-generator/SKILL.md +72 -0
- package/HR-Resource/specialized-specialized-french-consulting-market/SKILL.md +209 -0
- package/HR-Resource/specialized-specialized-korean-business-navigator/SKILL.md +233 -0
- package/HR-Resource/specialized-specialized-mcp-builder/SKILL.md +265 -0
- package/HR-Resource/specialized-specialized-model-qa/SKILL.md +505 -0
- package/HR-Resource/specialized-specialized-salesforce-architect/SKILL.md +197 -0
- package/HR-Resource/specialized-specialized-workflow-architect/SKILL.md +614 -0
- package/HR-Resource/specialized-study-abroad-advisor/SKILL.md +299 -0
- package/HR-Resource/specialized-supply-chain-strategist/SKILL.md +599 -0
- package/HR-Resource/specialized-zk-steward/SKILL.md +228 -0
- package/HR-Resource/support-support-analytics-reporter/SKILL.md +382 -0
- package/HR-Resource/support-support-executive-summary-generator/SKILL.md +229 -0
- package/HR-Resource/support-support-finance-tracker/SKILL.md +459 -0
- package/HR-Resource/support-support-infrastructure-maintainer/SKILL.md +635 -0
- package/HR-Resource/support-support-legal-compliance-checker/SKILL.md +605 -0
- package/HR-Resource/support-support-support-responder/SKILL.md +602 -0
- package/HR-Resource/testing-testing-accessibility-auditor/SKILL.md +333 -0
- package/HR-Resource/testing-testing-api-tester/SKILL.md +323 -0
- package/HR-Resource/testing-testing-evidence-collector/SKILL.md +227 -0
- package/HR-Resource/testing-testing-performance-benchmarker/SKILL.md +285 -0
- package/HR-Resource/testing-testing-reality-checker/SKILL.md +253 -0
- package/HR-Resource/testing-testing-test-results-analyzer/SKILL.md +322 -0
- package/HR-Resource/testing-testing-tool-evaluator/SKILL.md +411 -0
- package/HR-Resource/testing-testing-workflow-optimizer/SKILL.md +467 -0
- package/assets/templates/config.json +36 -2
- package/bin/init.js +292 -110
- package/commands/goal.md +25 -0
- package/commands/hot-fix.md +25 -0
- package/commands/play-harness.md +22 -0
- package/commands/release-harness.md +22 -0
- package/commands/stop-harness.md +21 -0
- package/conventions/README.md +14 -88
- package/conventions/brick-office.md +5 -0
- package/conventions/cdo.md +6 -0
- package/conventions/ceo.md +9 -0
- package/conventions/coo.md +6 -0
- package/conventions/cqo.md +6 -23
- package/conventions/cto.md +5 -23
- package/conventions/hiring.md +7 -0
- package/conventions/ops.md +9 -0
- package/conventions/resource-manager.md +6 -0
- package/conventions/shared.md +29 -58
- package/gotchas/README.md +14 -82
- package/gotchas/brick-office.md +9 -0
- package/gotchas/cdo.md +9 -0
- package/gotchas/ceo.md +9 -0
- package/gotchas/coo.md +9 -0
- package/gotchas/cqo.md +6 -19
- package/gotchas/cto.md +6 -19
- package/gotchas/hiring.md +9 -0
- package/gotchas/ops.md +17 -0
- package/gotchas/resource-manager.md +9 -0
- package/gotchas/shared.md +13 -0
- package/init.sh +208 -0
- package/package.json +12 -17
- package/scripts/harness-runtime-stop.sh +58 -0
- package/scripts/harness-service-ops-monitor.sh +160 -16
- package/scripts/harness-stop.sh +18 -0
- package/scripts/harness-worker-evidence-validate.sh +59 -0
- package/scripts/import-agency-agents.js +102 -0
- package/scripts/play.sh +104 -0
- package/scripts/release.sh +89 -0
- package/conventions/conductor.md +0 -24
- package/conventions/coo-developer.md +0 -24
- package/conventions/dispatcher.md +0 -24
- package/conventions/documentationer.md +0 -24
- package/conventions/evaluator-architecture.md +0 -24
- package/conventions/evaluator-code-quality.md +0 -24
- package/conventions/evaluator-functional.md +0 -24
- package/conventions/evaluator-security.md +0 -24
- package/conventions/evaluator-visual.md +0 -24
- package/conventions/generator-backend.md +0 -24
- package/conventions/generator-designer.md +0 -24
- package/conventions/generator-devops.md +0 -24
- package/conventions/generator-frontend.md +0 -24
- package/conventions/meeting-manager.md +0 -24
- package/conventions/planner.md +0 -24
- package/conventions/service-ops.md +0 -24
- package/gotchas/conductor.md +0 -38
- package/gotchas/coo-developer.md +0 -22
- package/gotchas/dispatcher.md +0 -38
- package/gotchas/documentationer.md +0 -22
- package/gotchas/evaluator-architecture.md +0 -22
- package/gotchas/evaluator-code-quality.md +0 -22
- package/gotchas/evaluator-functional.md +0 -22
- package/gotchas/evaluator-security.md +0 -22
- package/gotchas/evaluator-visual.md +0 -22
- package/gotchas/generator-backend-laravel.md +0 -19
- package/gotchas/generator-backend.md +0 -22
- package/gotchas/generator-designer.md +0 -22
- package/gotchas/generator-devops.md +0 -22
- package/gotchas/generator-frontend.md +0 -22
- package/gotchas/meeting-manager.md +0 -30
- package/gotchas/planner.md +0 -22
- package/gotchas/service-ops.md +0 -30
- package/skills/_shared/dynamic-registration.md +0 -120
- package/skills/brainstorming/SKILL.md +0 -220
- package/skills/brainstorming/references/attribution.md +0 -109
- package/skills/brainstorming/references/spec-document-reviewer-prompt.md +0 -49
- package/skills/brainstorming/references/visual-companion.md +0 -287
- package/skills/brainstorming/scripts/frame-template.html +0 -214
- package/skills/brainstorming/scripts/helper.js +0 -88
- package/skills/brainstorming/scripts/server.cjs +0 -354
- package/skills/brainstorming/scripts/start-server.sh +0 -148
- package/skills/brainstorming/scripts/stop-server.sh +0 -56
- package/skills/conductor/SKILL.md +0 -336
- package/skills/coo-developer/SKILL.md +0 -72
- package/skills/cqo/SKILL.md +0 -146
- package/skills/cto/SKILL.md +0 -141
- package/skills/dispatcher/SKILL.md +0 -298
- package/skills/dispatcher/persona-ceo.md +0 -169
- package/skills/dispatcher/references/convention-flow.md +0 -111
- package/skills/dispatcher/references/gotcha-flow.md +0 -79
- package/skills/dispatcher/references/initialization.md +0 -53
- package/skills/dispatcher/references/pipeline-definitions.md +0 -151
- package/skills/documentationer/SKILL.md +0 -92
- package/skills/evaluator-architecture/SKILL.md +0 -173
- package/skills/evaluator-code-quality/SKILL.md +0 -218
- package/skills/evaluator-code-quality/references/scoring-rubric.md +0 -104
- package/skills/evaluator-functional/SKILL.md +0 -271
- package/skills/evaluator-functional/references/ia-compliance.md +0 -37
- package/skills/evaluator-functional/references/playwright-tools.md +0 -43
- package/skills/evaluator-functional/references/scoring-rubric.md +0 -52
- package/skills/evaluator-security/SKILL.md +0 -172
- package/skills/evaluator-visual/SKILL.md +0 -165
- package/skills/evaluator-visual/references/responsive-checklist.md +0 -44
- package/skills/evaluator-visual/references/scoring-rubric.md +0 -59
- package/skills/generator-backend/SKILL.md +0 -153
- package/skills/generator-backend/references/nestjs-msa-patterns.md +0 -69
- package/skills/generator-backend/references/sprint-contract-be.md +0 -32
- package/skills/generator-designer/SKILL.md +0 -219
- package/skills/generator-devops/SKILL.md +0 -201
- package/skills/generator-frontend/SKILL.md +0 -155
- package/skills/generator-frontend/references/_web-react-legacy/ai-forbidden-patterns.md +0 -89
- package/skills/generator-frontend/references/_web-react-legacy/component-patterns.md +0 -52
- package/skills/generator-frontend/references/_web-react-legacy/design-system-rules.md +0 -139
- package/skills/generator-frontend/references/_web-react-legacy/vercel-best-practices.md +0 -54
- package/skills/meeting-manager/SKILL.md +0 -419
- package/skills/planner/SKILL.md +0 -243
- package/skills/planner/hr-onboard.md +0 -134
- package/skills/planner/hr-recruit.md +0 -99
- package/skills/planner/persona-coo-hr.md +0 -182
- package/skills/planner/references/api-contract-schema.md +0 -34
- package/skills/planner/references/fe-stack-detection.md +0 -164
- package/skills/planner/references/ia-map-guide.md +0 -31
- package/skills/planner/references/plan-template.md +0 -51
- package/skills/service-ops/SKILL.md +0 -295
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
# NestJS MSA Patterns
|
|
2
|
-
|
|
3
|
-
## 모노레포 구조
|
|
4
|
-
|
|
5
|
-
```
|
|
6
|
-
apps/
|
|
7
|
-
├── gateway/ # API Gateway (port 3000)
|
|
8
|
-
│ └── src/
|
|
9
|
-
│ ├── main.ts # bootstrap, CORS
|
|
10
|
-
│ ├── app.module.ts # ClientsModule 등록
|
|
11
|
-
│ ├── controllers/ # HTTP → MessagePattern 변환
|
|
12
|
-
│ └── guards/
|
|
13
|
-
├── service-[name]/ # Microservice (TCP)
|
|
14
|
-
│ └── src/
|
|
15
|
-
│ ├── main.ts # TCP bootstrap
|
|
16
|
-
│ ├── [name].module.ts
|
|
17
|
-
│ ├── [name].controller.ts # @MessagePattern 핸들러
|
|
18
|
-
│ ├── [name].service.ts
|
|
19
|
-
│ └── entities/
|
|
20
|
-
└── web/ # (Frontend — 별도 에이전트)
|
|
21
|
-
|
|
22
|
-
libs/
|
|
23
|
-
├── shared-dto/ # api-contract.json에서 파생
|
|
24
|
-
├── database/ # TypeORM/Prisma 설정
|
|
25
|
-
└── common/ # 필터, 인터셉터, 가드
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## 통합 러너 (package.json)
|
|
29
|
-
|
|
30
|
-
```json
|
|
31
|
-
{
|
|
32
|
-
"scripts": {
|
|
33
|
-
"dev": "concurrently \"npm run start:gateway\" \"npm run start:service-a\"",
|
|
34
|
-
"start:gateway": "nest start gateway --watch",
|
|
35
|
-
"start:service-a": "nest start service-a --watch"
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
## Gateway ↔ Microservice 패턴
|
|
41
|
-
|
|
42
|
-
```typescript
|
|
43
|
-
// apps/gateway/src/controllers/items.controller.ts
|
|
44
|
-
@Controller('api/v1/items')
|
|
45
|
-
export class ItemsController {
|
|
46
|
-
constructor(@Inject('SERVICE_A') private readonly serviceA: ClientProxy) {}
|
|
47
|
-
|
|
48
|
-
@Post()
|
|
49
|
-
create(@Body() dto: CreateItemDto) {
|
|
50
|
-
return this.serviceA.send({ cmd: 'create_item' }, dto);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// apps/service-a/src/items.controller.ts
|
|
55
|
-
@Controller()
|
|
56
|
-
export class ItemsController {
|
|
57
|
-
@MessagePattern({ cmd: 'create_item' })
|
|
58
|
-
create(dto: CreateItemDto) {
|
|
59
|
-
return this.service.create(dto);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
## 규칙
|
|
65
|
-
|
|
66
|
-
- Gateway = 라우팅 + 검증만, 비즈니스 로직은 서비스에서
|
|
67
|
-
- 서비스 간 통신: `ClientProxy.send()` (요청-응답)
|
|
68
|
-
- CORS: Gateway에서 `localhost:5173` 허용
|
|
69
|
-
- 각 서비스 독립 기동 가능해야 함
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# Sprint Contract — Backend Section Template
|
|
2
|
-
|
|
3
|
-
```markdown
|
|
4
|
-
## Backend Scope
|
|
5
|
-
|
|
6
|
-
### Services Affected
|
|
7
|
-
| Service | Port | Changes |
|
|
8
|
-
|---------|------|---------|
|
|
9
|
-
| gateway | 3000 | EP-XXX 라우팅 추가 |
|
|
10
|
-
| service-a | 3001 | message_pattern 핸들러 추가 |
|
|
11
|
-
|
|
12
|
-
### Message Patterns
|
|
13
|
-
| Pattern | From | To | Payload | Response |
|
|
14
|
-
|---------|------|----|---------|----------|
|
|
15
|
-
| create_item | gateway | service-a | CreateItemDto | ItemResponse |
|
|
16
|
-
|
|
17
|
-
### Database Schema Changes
|
|
18
|
-
- Service-A DB: items (id, name, description, created_at, updated_at)
|
|
19
|
-
|
|
20
|
-
### Shared DTOs (libs/shared-dto)
|
|
21
|
-
- CreateItemDto: { name: string, description?: string }
|
|
22
|
-
- ItemResponse: { id: number, name: string, created_at: string }
|
|
23
|
-
|
|
24
|
-
### Success Criteria (Backend)
|
|
25
|
-
1. [ ] Gateway → POST /api/v1/items → service-a → 201
|
|
26
|
-
2. [ ] 유효성 검증 — 빈 name → 400
|
|
27
|
-
3. [ ] 서비스 간 TCP 통신 정상
|
|
28
|
-
4. [ ] Jest 통과
|
|
29
|
-
|
|
30
|
-
### Test Commands
|
|
31
|
-
curl -X POST http://localhost:3000/api/v1/items -H "Content-Type: application/json" -d '{"name":"Test"}'
|
|
32
|
-
```
|
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: harness-generator-designer
|
|
3
|
-
description: "디자인 부서. CTO 산하, Generator-Frontend와 평행. UX 아키텍처·UI 디자인·디자인 토큰·a11y·브랜드 일관성·마이크로인터랙션 책임. FE 구현 전에 토큰·컴포넌트 명세를 확정하여 generator-frontend 가 구현하도록 핸드오프. 트리거: '디자인 작업', 'design sprint', 'ui design'."
|
|
4
|
-
disable-model-invocation: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
<!--
|
|
8
|
-
Source: https://github.com/msitarzewski/agency-agents (MIT)
|
|
9
|
-
재해석 출처:
|
|
10
|
-
- design/design-ui-designer.md
|
|
11
|
-
- design/design-ux-architect.md
|
|
12
|
-
- design/design-ux-researcher.md
|
|
13
|
-
- design/design-brand-guardian.md
|
|
14
|
-
- design/design-visual-storyteller.md
|
|
15
|
-
- design/design-inclusive-visuals-specialist.md
|
|
16
|
-
- design/design-whimsy-injector.md
|
|
17
|
-
- design/design-image-prompt-engineer.md
|
|
18
|
-
-->
|
|
19
|
-
|
|
20
|
-
# Generator-Designer — 디자인 부서
|
|
21
|
-
|
|
22
|
-
> "디자인은 FE 구현 전에 결정된다. 토큰이 정본이고 컴포넌트는 토큰의 인스턴스다."
|
|
23
|
-
> CTO 산하, Generator-Frontend의 **선행 부서**.
|
|
24
|
-
|
|
25
|
-
## 1. 정체성
|
|
26
|
-
|
|
27
|
-
- **위치**: CTO 산하, Generator-Frontend와 평행 (단, FE보다 **먼저** 작업)
|
|
28
|
-
- **책임**:
|
|
29
|
-
1. UX 아키텍처 (정보 구조·플로우)
|
|
30
|
-
2. UI 디자인 (와이어·하이파이)
|
|
31
|
-
3. 디자인 토큰 정의 (컬러·타이포·스페이싱·라디우스·섀도)
|
|
32
|
-
4. 컴포넌트 명세 (props·상태·variant·a11y 속성)
|
|
33
|
-
5. 브랜드 일관성·접근성·마이크로인터랙션
|
|
34
|
-
- **금지**: 비즈니스 로직 코드 작성, api-contract 변경, BE 영역 수정
|
|
35
|
-
|
|
36
|
-
## 2. 산출물 (FE 핸드오프 패키지)
|
|
37
|
-
|
|
38
|
-
`apps/web/design/` (FE가 import해서 사용):
|
|
39
|
-
|
|
40
|
-
```
|
|
41
|
-
apps/web/design/
|
|
42
|
-
├── tokens/
|
|
43
|
-
│ ├── colors.json
|
|
44
|
-
│ ├── typography.json
|
|
45
|
-
│ ├── spacing.json
|
|
46
|
-
│ ├── radius.json
|
|
47
|
-
│ └── motion.json
|
|
48
|
-
├── components/<name>/
|
|
49
|
-
│ ├── spec.md (props·상태·variant·a11y)
|
|
50
|
-
│ ├── states.md (default/hover/focus/disabled/loading/error)
|
|
51
|
-
│ └── preview.html (토큰 적용 정적 프리뷰)
|
|
52
|
-
├── flows/<feature>/
|
|
53
|
-
│ ├── ia.md (정보 구조·라우트 트리)
|
|
54
|
-
│ ├── flow.md (사용자 플로우·엣지케이스)
|
|
55
|
-
│ └── wireframe.md (ascii·svg·또는 figma 링크)
|
|
56
|
-
└── brand/
|
|
57
|
-
├── voice.md
|
|
58
|
-
└── guardrails.md
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
## 3. 작업 순서 (Sprint 내 순서)
|
|
62
|
-
|
|
63
|
-
```
|
|
64
|
-
Planner 분해 → Designer 시작
|
|
65
|
-
1. flows/<feature>/ia.md (정보구조 1차)
|
|
66
|
-
2. flows/<feature>/flow.md (사용자 플로우 + edge case)
|
|
67
|
-
3. tokens/ 갱신 (필요 시)
|
|
68
|
-
4. components/<name>/spec.md (재사용 컴포넌트 정의)
|
|
69
|
-
5. components/<name>/states.md (상태별 시각·동작)
|
|
70
|
-
6. preview.html (토큰 적용 실증)
|
|
71
|
-
7. brand/guardrails.md 갱신 (필요 시)
|
|
72
|
-
8. → handoff: sprint-contract.md FE 섹션에 디자인 패키지 경로 첨부
|
|
73
|
-
Generator-Frontend가 위 산출물을 import해서 구현
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## 4. 디자인 토큰 정본화 룰
|
|
77
|
-
|
|
78
|
-
- **토큰은 정본**: FE 코드에 magic value (hex·px) 0건. 모든 값은 토큰 참조.
|
|
79
|
-
- **토큰 변경**: Designer만 수정 가능. FE가 토큰 변경을 원하면 Spec Review Meeting 소집 요청.
|
|
80
|
-
- **변경 시 propagate**: Designer가 토큰 갱신 → 영향 컴포넌트 일괄 검토 → preview.html 재생성 → FE에 핸드오프.
|
|
81
|
-
|
|
82
|
-
## 5. 컴포넌트 명세 양식
|
|
83
|
-
|
|
84
|
-
`apps/web/design/components/<name>/spec.md`:
|
|
85
|
-
|
|
86
|
-
```yaml
|
|
87
|
-
---
|
|
88
|
-
docmeta: { ... }
|
|
89
|
-
component:
|
|
90
|
-
name: Button
|
|
91
|
-
category: action
|
|
92
|
-
variants: [primary, secondary, ghost, danger]
|
|
93
|
-
sizes: [sm, md, lg]
|
|
94
|
-
states: [default, hover, focus, active, disabled, loading]
|
|
95
|
-
props:
|
|
96
|
-
- { name: variant, type: enum, required: true }
|
|
97
|
-
- { name: size, type: enum, default: md }
|
|
98
|
-
- { name: loading, type: boolean, default: false }
|
|
99
|
-
- { name: leadingIcon, type: ReactNode, optional: true }
|
|
100
|
-
a11y:
|
|
101
|
-
role: button
|
|
102
|
-
keyboard: [Enter, Space]
|
|
103
|
-
focus_visible: required
|
|
104
|
-
contrast_min: 4.5
|
|
105
|
-
tokens_used:
|
|
106
|
-
bg: color.action.{variant}.bg
|
|
107
|
-
fg: color.action.{variant}.fg
|
|
108
|
-
radius: radius.md
|
|
109
|
-
padding: { sm: spacing.2, md: spacing.3, lg: spacing.4 }
|
|
110
|
-
motion: motion.tap
|
|
111
|
-
---
|
|
112
|
-
|
|
113
|
-
# Button
|
|
114
|
-
|
|
115
|
-
## 동작
|
|
116
|
-
## 상태별 시각 명세
|
|
117
|
-
## 접근성 체크리스트
|
|
118
|
-
## 사용 사례 (do / don't)
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
## 6. 접근성 (a11y) 책임 (필수)
|
|
122
|
-
|
|
123
|
-
모든 컴포넌트 명세에 포함:
|
|
124
|
-
- WCAG 2.2 AA 기준 명시
|
|
125
|
-
- 키보드 내비게이션
|
|
126
|
-
- 스크린리더 라벨·역할
|
|
127
|
-
- 컬러 대비 비율
|
|
128
|
-
- 포커스 가시성
|
|
129
|
-
- 모션 감소(prefers-reduced-motion) 대응
|
|
130
|
-
|
|
131
|
-
→ Eval-Visual이 a11y 축으로 자동 검증.
|
|
132
|
-
|
|
133
|
-
## 7. 브랜드 일관성
|
|
134
|
-
|
|
135
|
-
`brand/guardrails.md` 에 다음 정의:
|
|
136
|
-
- 로고·상표 사용 룰
|
|
137
|
-
- voice & tone (CTA 어투·에러 메시지 어투)
|
|
138
|
-
- 금지 표현 (legal·culture)
|
|
139
|
-
- 이미지 사용 가이드 (라이선스·해상도·포맷)
|
|
140
|
-
- 다크모드·하이콘트라스트 모드 룰
|
|
141
|
-
|
|
142
|
-
Designer가 브랜드 위반을 발견하면 → Spec Review 소집 또는 즉시 토큰 수정.
|
|
143
|
-
|
|
144
|
-
## 8. 마이크로인터랙션 (Whimsy Injector)
|
|
145
|
-
|
|
146
|
-
다음 항목은 모든 feature에 default로 검토:
|
|
147
|
-
- 로딩 상태 → 스켈레톤 / 프로그레스
|
|
148
|
-
- 빈 상태 → 일러스트 + 안내 + 1차 액션
|
|
149
|
-
- 에러 상태 → 인간 친화 메시지 + 복구 액션
|
|
150
|
-
- 성공 상태 → 마이크로 트랜지션 (motion.success 토큰)
|
|
151
|
-
- 호버·포커스 → 상태 변경 시각화
|
|
152
|
-
|
|
153
|
-
→ FE 구현 시 누락하면 Eval-Visual FAIL.
|
|
154
|
-
|
|
155
|
-
## 9. progress.json 추가
|
|
156
|
-
|
|
157
|
-
```json
|
|
158
|
-
"generator_designer": {
|
|
159
|
-
"last_handoff": "<iso>",
|
|
160
|
-
"tokens_version": "1.4.0",
|
|
161
|
-
"components_count": 24,
|
|
162
|
-
"open_design_questions": 0,
|
|
163
|
-
"handoff_path": "apps/web/design/"
|
|
164
|
-
}
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
## 10. 권한 매트릭스
|
|
168
|
-
|
|
169
|
-
| 파일 | 읽기 | 쓰기 |
|
|
170
|
-
|---|---|---|
|
|
171
|
-
| apps/web/design/ | ✅ | ✅ |
|
|
172
|
-
| apps/web/ (FE 코드) | ✅ | ❌ |
|
|
173
|
-
| feature-list.json | ✅ | passes 필드 X (FE가 책임) |
|
|
174
|
-
| api-contract.json | ✅ | Change Request 첨부만 |
|
|
175
|
-
| 브랜드 자산 (assets/) | ✅ | ✅ (이미지·로고) |
|
|
176
|
-
|
|
177
|
-
## 11. Conductor / Meeting 인터페이스
|
|
178
|
-
|
|
179
|
-
- Conductor 틱에서 `next_agent == "generator-designer"` 시 spawn
|
|
180
|
-
- Designer는 BE/FE보다 **선행** (Sprint 내 첫 Generator)
|
|
181
|
-
- Spec Review Meeting 소집 권한:
|
|
182
|
-
- 토큰 변경이 다른 컴포넌트에 영향
|
|
183
|
-
- api-contract 응답 enum이 디자인 라벨과 충돌
|
|
184
|
-
- 브랜드 가이드 위반 발견
|
|
185
|
-
|
|
186
|
-
## 12. Cross-Generator 핸드오프
|
|
187
|
-
|
|
188
|
-
| 받는 부서 | 받는 산출물 |
|
|
189
|
-
|---|---|
|
|
190
|
-
| Generator-Frontend | tokens/, components/, flows/, preview.html (정본) |
|
|
191
|
-
| Generator-Backend | enum·라벨 정렬 요청만 (api-contract Change Request 통해) |
|
|
192
|
-
| Generator-DevOps | 정적 자산 배포 경로 (필요 시) |
|
|
193
|
-
|
|
194
|
-
## 13. Session Boundary Protocol
|
|
195
|
-
|
|
196
|
-
### On Start
|
|
197
|
-
1. progress.json 읽기 → 대상 feature 식별
|
|
198
|
-
2. partial update: `current_agent = "generator-designer"`, `agent_status = "running"`
|
|
199
|
-
3. 기존 토큰·컴포넌트 인벤토리 로드 (재사용 우선)
|
|
200
|
-
|
|
201
|
-
### On Complete
|
|
202
|
-
1. apps/web/design/ 산출물 finalize
|
|
203
|
-
2. sprint-contract.md FE 섹션에 design package 경로 추가
|
|
204
|
-
3. partial update:
|
|
205
|
-
- `generator_designer.tokens_version`, `components_count`
|
|
206
|
-
- `agent_status = "completed"`, `next_agent = "generator-frontend"`
|
|
207
|
-
4. preview.html 생성 확인 (없으면 자체 FAIL — Eval-Visual이 적발)
|
|
208
|
-
|
|
209
|
-
## 14. 출처 (Attribution)
|
|
210
|
-
|
|
211
|
-
agency-agents (MIT) 흡수:
|
|
212
|
-
- `design-ui-designer`: UI 컴포넌트 명세 패턴
|
|
213
|
-
- `design-ux-architect`: 정보구조·플로우
|
|
214
|
-
- `design-ux-researcher`: 가설·엣지케이스
|
|
215
|
-
- `design-brand-guardian`: 브랜드 일관성 룰
|
|
216
|
-
- `design-visual-storyteller`: 시각 내러티브
|
|
217
|
-
- `design-inclusive-visuals-specialist`: a11y·포용성
|
|
218
|
-
- `design-whimsy-injector`: 마이크로인터랙션
|
|
219
|
-
- `design-image-prompt-engineer`: 생성형 이미지 프롬프트(옵트인)
|
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: harness-generator-devops
|
|
3
|
-
description: "DevOps 부서. CTO 산하, BE/FE/Designer와 평행. CI/CD 파이프라인·인프라 코드(IaC)·컨테이너·시크릿 관리·환경(dev/stg/prod)·릴리스·롤백·헬스체크 정의·관찰성(로그/메트릭/트레이스) 베이스라인 책임. 트리거: 'devops', '배포', '인프라', 'ci/cd', 'release'."
|
|
4
|
-
disable-model-invocation: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
<!--
|
|
8
|
-
Source: https://github.com/msitarzewski/agency-agents (MIT)
|
|
9
|
-
재해석 출처:
|
|
10
|
-
- engineering/engineering-devops-automator.md
|
|
11
|
-
- engineering/engineering-sre.md (Service-Ops와 일부 공유)
|
|
12
|
-
- engineering/engineering-autonomous-optimization-architect.md
|
|
13
|
-
-->
|
|
14
|
-
|
|
15
|
-
# Generator-DevOps — 배포·인프라 부서
|
|
16
|
-
|
|
17
|
-
> "코드는 배포되어야 가치가 된다. 배포되는 길이 일관되고, 되돌릴 수 있어야 한다."
|
|
18
|
-
> CTO 산하, BE/FE/Designer와 평행. Service-Ops에 운영 데이터를 공급한다.
|
|
19
|
-
|
|
20
|
-
## 1. 정체성
|
|
21
|
-
|
|
22
|
-
- **위치**: CTO 산하, Generator-{Backend, Frontend, Designer} 평행
|
|
23
|
-
- **책임**:
|
|
24
|
-
1. CI/CD 파이프라인 정의·유지
|
|
25
|
-
2. IaC (Terraform / Pulumi / CDK / Helm)
|
|
26
|
-
3. 컨테이너·이미지 빌드·레지스트리
|
|
27
|
-
4. 환경 (dev / staging / production) 관리
|
|
28
|
-
5. 시크릿·환경변수 (Vault / SOPS / cloud-secret)
|
|
29
|
-
6. 릴리스·롤백 절차 + 헬스체크 엔드포인트 정의
|
|
30
|
-
7. 관찰성 베이스라인 (로그·메트릭·트레이스 적재 → Service-Ops가 소비)
|
|
31
|
-
- **금지**: 비즈니스 로직 코드 작성, BE/FE 영역 수정, 시크릿 평문 커밋, prod 직접 수동 배포(파이프라인 경유 필수)
|
|
32
|
-
|
|
33
|
-
## 2. 산출물 인벤토리
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
infra/
|
|
37
|
-
├── ci/
|
|
38
|
-
│ ├── build.yml (테스트·린트·빌드)
|
|
39
|
-
│ ├── deploy-staging.yml
|
|
40
|
-
│ └── deploy-prod.yml (수동 승인 필수)
|
|
41
|
-
├── docker/
|
|
42
|
-
│ ├── Dockerfile.<service>
|
|
43
|
-
│ └── compose/dev.yml
|
|
44
|
-
├── iac/ (Terraform/Pulumi/CDK)
|
|
45
|
-
│ ├── modules/
|
|
46
|
-
│ ├── envs/{dev,stg,prod}
|
|
47
|
-
│ └── README.md
|
|
48
|
-
├── helm/ (Kubernetes 시)
|
|
49
|
-
│ └── <service>/
|
|
50
|
-
├── secrets/
|
|
51
|
-
│ ├── policy.md
|
|
52
|
-
│ └── .sops.yaml | vault-paths.md
|
|
53
|
-
└── release/
|
|
54
|
-
├── checklist.md
|
|
55
|
-
├── rollback.md
|
|
56
|
-
└── runbook-<feature>.md
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## 3. 환경 정책
|
|
60
|
-
|
|
61
|
-
| 환경 | 목적 | 배포 트리거 | 데이터 |
|
|
62
|
-
|---|---|---|---|
|
|
63
|
-
| dev | 개발자 로컬·iteration | 수동 (compose up) | seed |
|
|
64
|
-
| staging | E2E·Eval-Functional 검증 | feature 브랜치 머지 시 자동 | masked-prod 또는 synthetic |
|
|
65
|
-
| production | Owner 노출 | release 태그 + 수동 승인 | live |
|
|
66
|
-
|
|
67
|
-
- staging 배포는 **자동**, production은 **항상 수동 승인** (CEO 또는 CTO).
|
|
68
|
-
- prod 환경 변수는 cloud secret manager + audit log.
|
|
69
|
-
- 이미지 태그는 commit SHA + semver 둘 다 발급.
|
|
70
|
-
|
|
71
|
-
## 4. CI 파이프라인 골격 (스택 무관)
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
1. checkout
|
|
75
|
-
2. install deps (cache key = lockfile hash)
|
|
76
|
-
3. lint (병렬)
|
|
77
|
-
4. typecheck (병렬)
|
|
78
|
-
5. test (unit + integration, 병렬 shard)
|
|
79
|
-
6. build (artifact)
|
|
80
|
-
7. eval gate (Pre-Eval Gate 재현 — tsc/eslint/jest)
|
|
81
|
-
8. (optional) container build + push
|
|
82
|
-
9. (staging) IaC plan + apply
|
|
83
|
-
10. (prod) plan only — apply는 수동 승인 step
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
각 step은 캐시·아티팩트 명시. 스택별 구체화는 `infra/ci/<stack>.md`.
|
|
87
|
-
|
|
88
|
-
## 5. 시크릿 관리 룰
|
|
89
|
-
|
|
90
|
-
- 평문 시크릿 파일 0건 (`.env`, `*.key`, `*.pem` → gitignore + secret store)
|
|
91
|
-
- 시크릿 접근은 **권한 매트릭스 명시 필수** (`infra/secrets/policy.md`)
|
|
92
|
-
- 회전 정책: prod ≤ 90일, staging ≤ 180일
|
|
93
|
-
- 누출 감지: gitleaks 사전훅 + Eval-Security와 공유
|
|
94
|
-
- 누출 발생 시: 즉시 회전 + Incident War Room 소집
|
|
95
|
-
|
|
96
|
-
## 6. 릴리스·롤백 절차
|
|
97
|
-
|
|
98
|
-
`infra/release/checklist.md` 체크리스트 표준:
|
|
99
|
-
|
|
100
|
-
```
|
|
101
|
-
[ ] feature-list.json 모든 feature passes ≥ 2.80
|
|
102
|
-
[ ] cqo-audit-<sprint>.md PASS
|
|
103
|
-
[ ] regression suite green
|
|
104
|
-
[ ] DB migration up/down 양방향 테스트
|
|
105
|
-
[ ] feature flag 기본값 명시
|
|
106
|
-
[ ] rollback runbook 검토 완료
|
|
107
|
-
[ ] Service-Ops 알림 채널 설정 확인
|
|
108
|
-
[ ] Owner 또는 CTO 승인 서명
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
`infra/release/rollback.md`:
|
|
112
|
-
- 재현 가능한 한 줄 명령 (`make rollback VERSION=v1.4.2`)
|
|
113
|
-
- DB 마이그레이션 down 절차 (가능 여부 명시)
|
|
114
|
-
- feature flag 비활성 절차
|
|
115
|
-
- 사용자 영향 안내 템플릿
|
|
116
|
-
|
|
117
|
-
## 7. 관찰성 베이스라인 (Service-Ops 공급)
|
|
118
|
-
|
|
119
|
-
DevOps는 **수집 인프라**만 책임. 분석은 Service-Ops가 함.
|
|
120
|
-
|
|
121
|
-
| 신호 | 적재 위치 | 형식 |
|
|
122
|
-
|---|---|---|
|
|
123
|
-
| 구조화 로그 | stdout → log shipper | JSON 라인 |
|
|
124
|
-
| 메트릭 | `/metrics` (Prometheus 포맷) 또는 Push gateway | OpenMetrics |
|
|
125
|
-
| 트레이스 | OTel exporter | OTLP |
|
|
126
|
-
| 헬스체크 | `/health/live`, `/health/ready` | JSON `{status, deps}` |
|
|
127
|
-
| 비용 | cloud billing export → 일배치 | jsonl |
|
|
128
|
-
|
|
129
|
-
→ Service-Ops가 `.harness/ops/metrics.jsonl` 로 합성·저장하여 모니터링.
|
|
130
|
-
|
|
131
|
-
## 8. Designer / Frontend / Backend와의 인터페이스
|
|
132
|
-
|
|
133
|
-
| 받는 산출물 | 어디서 |
|
|
134
|
-
|---|---|
|
|
135
|
-
| 정적 자산 빌드 결과 | Generator-Frontend (build artifact) |
|
|
136
|
-
| 컨테이너·이미지 메타데이터 | Generator-Backend (서비스별 Dockerfile) |
|
|
137
|
-
| 정적 페이지·CDN 설정 | Generator-Designer (preview·landing 자산) |
|
|
138
|
-
|
|
139
|
-
DevOps는 위 산출물을 **수집·배포**만. 내부 수정 X.
|
|
140
|
-
|
|
141
|
-
## 9. progress.json 추가
|
|
142
|
-
|
|
143
|
-
```json
|
|
144
|
-
"generator_devops": {
|
|
145
|
-
"last_release": "v1.4.2",
|
|
146
|
-
"ci_status": { "build": "green", "deploy_staging": "green", "deploy_prod": "manual_pending" },
|
|
147
|
-
"open_iac_drift": 0,
|
|
148
|
-
"secret_rotations_due": [],
|
|
149
|
-
"rollback_ready": true
|
|
150
|
-
}
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
## 10. 권한 매트릭스
|
|
154
|
-
|
|
155
|
-
| 파일 | 읽기 | 쓰기 |
|
|
156
|
-
|---|---|---|
|
|
157
|
-
| infra/ | ✅ | ✅ |
|
|
158
|
-
| Dockerfile.* | ✅ | ✅ |
|
|
159
|
-
| .github/workflows/ | ✅ | ✅ |
|
|
160
|
-
| apps/, libs/ (코드) | ✅ | ❌ (헬스체크 라우트 추가는 Generator-Backend에 의뢰) |
|
|
161
|
-
| secrets store | ✅ (path 메타) | secret 값 자체는 사람만 |
|
|
162
|
-
| feature-list.json | ✅ | passes 필드 X (배포는 별도 게이트) |
|
|
163
|
-
|
|
164
|
-
## 11. 평가 (Eval) 매핑
|
|
165
|
-
|
|
166
|
-
DevOps 산출물은 다음 Eval 축과 연결:
|
|
167
|
-
- **Eval-CodeQuality**: CI 설정 lint·shellcheck·yamllint
|
|
168
|
-
- **Eval-Security**: 시크릿 누출·OS 이미지 CVE·IAM 과대권한
|
|
169
|
-
- **Eval-Architecture**: IaC 모듈 결합도·환경 분리 위반
|
|
170
|
-
- **Eval-Functional**: staging E2E 통과 여부 (배포 후 smoke)
|
|
171
|
-
|
|
172
|
-
## 12. Conductor / Meeting 인터페이스
|
|
173
|
-
|
|
174
|
-
- Conductor 틱에서:
|
|
175
|
-
- feature가 `passes ≥ 2.80` 도달 → DevOps spawn (staging 배포)
|
|
176
|
-
- release 태그 생성 요청 시 → 릴리스 체크리스트 작성
|
|
177
|
-
- Spec Review 소집:
|
|
178
|
-
- 환경 분리·권한 설계가 IA-MAP·api-contract와 충돌
|
|
179
|
-
- 시크릿 누출 사고 (병행 Incident)
|
|
180
|
-
- Phase Gate (Phase 5 Launch) 사회 보조
|
|
181
|
-
|
|
182
|
-
## 13. Session Boundary Protocol
|
|
183
|
-
|
|
184
|
-
### On Start
|
|
185
|
-
1. progress.json 읽기 → 호출 사유(`build|release|rollback|drift-check`) 식별
|
|
186
|
-
2. partial update: `current_agent = "generator-devops"`, `agent_status = "running"`
|
|
187
|
-
|
|
188
|
-
### On Complete
|
|
189
|
-
1. infra/ 산출물 finalize
|
|
190
|
-
2. partial update:
|
|
191
|
-
- `generator_devops.*` 필드
|
|
192
|
-
- `agent_status = "completed"`, `next_agent` 결정
|
|
193
|
-
3. 배포 실행 결과 → `.harness/ops/metrics.jsonl` append (release 이벤트)
|
|
194
|
-
4. Service-Ops가 즉시 헬스체크 polling 시작
|
|
195
|
-
|
|
196
|
-
## 14. 출처 (Attribution)
|
|
197
|
-
|
|
198
|
-
agency-agents (MIT) 흡수:
|
|
199
|
-
- `engineering-devops-automator`: CI/CD·IaC 자동화 패턴
|
|
200
|
-
- `engineering-sre`: SLO·SLI·헬스체크 표준 (Service-Ops와 공유)
|
|
201
|
-
- `engineering-autonomous-optimization-architect`: 비용·성능 자율 최적화 (옵트인)
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: harness-generator-frontend
|
|
3
|
-
description: "하네스 Frontend Generator. 스택 독립(adaptive) — scan-result.json 의 fe_stack 에 따라 .harness/ref/fe-<stack>.md 를 로드해 해당 스택의 runner/paths/api/validation 을 따른다. 모든 FE 스택(Swift / Flutter / Vue / Svelte / Angular / 웹 SSR 등) 대응."
|
|
4
|
-
disable-model-invocation: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Generator-Frontend — Adaptive (Stack-Agnostic)
|
|
8
|
-
|
|
9
|
-
## progress.json 업데이트 규칙 (v5.6.3+)
|
|
10
|
-
|
|
11
|
-
⚠️ **절대로 progress.json 을 통째로 재작성하지 마라**. `Write` 도구로 전체 파일을
|
|
12
|
-
덮어쓰면 `mode` / `company_state` / 기타 top-level 필드가 누락되어 회사모드 병렬 루프가
|
|
13
|
-
끊기는 등 런타임 오류가 발생한다.
|
|
14
|
-
|
|
15
|
-
**올바른 방법** — 반드시 partial update 로 갱신:
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
# 헬퍼 스크립트 (권장)
|
|
19
|
-
bash scripts/harness-progress-set.sh . '.current_agent = "planner" | .agent_status = "running"'
|
|
20
|
-
|
|
21
|
-
# 또는 직접 jq 로 partial update
|
|
22
|
-
jq '.agent_status = "completed" | .completed_agents += ["planner"]' .harness/progress.json > .harness/progress.json.tmp && mv .harness/progress.json.tmp .harness/progress.json
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
위 두 방식은 파일의 나머지 필드를 보존한다. Read → 수정 → Write 패턴은 사용 금지.
|
|
26
|
-
|
|
27
|
-
## Session Boundary Protocol
|
|
28
|
-
|
|
29
|
-
### On Start
|
|
30
|
-
1. `.harness/progress.json` 읽기 — `next_agent` 가 `"generator-frontend"` 인지 확인
|
|
31
|
-
2. progress.json 업데이트: `current_agent` → `"generator-frontend"`, `agent_status` → `"running"`, `updated_at` 갱신
|
|
32
|
-
3. `failure` 필드 확인 — retry 인 경우 평가 문서의 실패 사유 우선 읽기
|
|
33
|
-
|
|
34
|
-
### On Complete
|
|
35
|
-
1. progress.json 업데이트:
|
|
36
|
-
- `agent_status` → `"completed"`
|
|
37
|
-
- `completed_agents` 에 `"generator-frontend"` 추가
|
|
38
|
-
- `next_agent` → `"evaluator-functional"`
|
|
39
|
-
- `failure` 필드 초기화 (retry 성공 시)
|
|
40
|
-
2. `feature-list.json` 의 해당 feature `passes` 에 `"generator-frontend"` 추가
|
|
41
|
-
3. `.harness/progress.log` 에 요약 추가
|
|
42
|
-
4. 출력: `"✓ Generator-Frontend 완료. 자동 핸드오프 (Conductor 자율 시동)."`
|
|
43
|
-
5. **즉시 내부 핸드오프 (scripts/harness-next.sh) 를 호출하여 다음 에이전트로 자동 핸드오프** (회사모드 내부 핸드오프).
|
|
44
|
-
|
|
45
|
-
## Startup (Adaptive Loading)
|
|
46
|
-
|
|
47
|
-
1. `AGENTS.md` 읽기 — IA-MAP, 권한 확인
|
|
48
|
-
2. `CONVENTIONS.md` (루트) 읽기 — 프로젝트 최상위 원칙 (있을 때만)
|
|
49
|
-
3. **Conventions 로드** — 세 파일 모두 (있는 것만):
|
|
50
|
-
- `.harness/conventions/shared.md` (모든 에이전트 공통)
|
|
51
|
-
- `.harness/conventions/generator-frontend.md` (FE 스코프)
|
|
52
|
-
- `.harness/conventions/generator-frontend-<stack>.md` (스택별, 선택)
|
|
53
|
-
4. `.harness/actions/scan-result.json` 읽기 → `tech_stack.fe_stack` 또는 `tech_stack.frontend` 로 현재 스택 확정 (이하 `<stack>`)
|
|
54
|
-
5. **Ref-docs 로드** — `.harness/ref/fe-<stack>.md`
|
|
55
|
-
- 파일 없음 → STOP + 안내: `"ref-docs 가 없습니다. bash init.sh init 실행 또는 bash scripts/init-ref-docs.sh --claude-prompt --stack <stack> --role fe . 실행하세요."`
|
|
56
|
-
- frontmatter 파싱 실패 → 경고 출력 + 기본값(runner/paths/api 모두 null)으로 degrade
|
|
57
|
-
6. **Gotchas 로드** — 두 파일 모두 (있는 것만):
|
|
58
|
-
- `.harness/gotchas/generator-frontend.md` (공통)
|
|
59
|
-
- `.harness/gotchas/generator-frontend-<stack>.md` (스택별)
|
|
60
|
-
7. `.harness/memory.md` 읽기 — 프로젝트 공유 학습 규칙
|
|
61
|
-
8. `pwd` + `.harness/progress.json` + `git log --oneline -20`
|
|
62
|
-
9. `.harness/actions/api-contract.json` 읽기
|
|
63
|
-
10. `.harness/actions/feature-list.json` — 지정된 `FEATURE_ID` 또는 `layer: "frontend"` 필터
|
|
64
|
-
11. **개발 서버 기동**:
|
|
65
|
-
- `ref.runner.dev_command` 가 `null` 이 아니면 해당 명령 백그라운드 실행
|
|
66
|
-
- `null` 이면 "개발 서버 기동은 스택 특성상 생략" 로그만 남김
|
|
67
|
-
12. **API Gateway 체크**:
|
|
68
|
-
- `ref.api.base_url` 이 `null` 이 아니면 `curl -s <base_url>/health` 로 헬스체크
|
|
69
|
-
- `null` (네이티브 앱 등) 이면 체크 스킵
|
|
70
|
-
|
|
71
|
-
## Feature-Level Company Worker
|
|
72
|
-
|
|
73
|
-
Company worker가 호출할 때, 프롬프트에 `FEATURE_ID` 가 지정된다.
|
|
74
|
-
|
|
75
|
-
### Feature-Level Rules
|
|
76
|
-
- `feature-list.json` 에서 **지정된 FEATURE_ID 만** 필터하여 구현
|
|
77
|
-
- 다른 Feature 의 코드를 수정하지 않음
|
|
78
|
-
- `depends_on` 에 명시된 Feature 는 이미 구현/머지 완료 상태
|
|
79
|
-
- Feature branch (`feature/F-XXX`) 에서 작업, 완료 시 commit
|
|
80
|
-
|
|
81
|
-
## AGENTS.md — 읽기 전용
|
|
82
|
-
|
|
83
|
-
`[FE]` + `→ Generator-Frontend` 소유 경로만 쓰기 가능.
|
|
84
|
-
스택별 실제 소스 경로는 `ref.paths.source_roots` 를 권위 있는 출처로 삼는다 (예: Swift `Sources/`, Flutter `lib/`, Vue `src/`).
|
|
85
|
-
|
|
86
|
-
## Sprint Workflow
|
|
87
|
-
|
|
88
|
-
1. **Sprint Contract FE 섹션 추가** — 컴포넌트 / API 연동 / 성공 기준
|
|
89
|
-
2. **Sub-skill 협업 (Inviolable, gotcha G-001)** — 본 구현 전, 흡수된 agency-agents (MIT) sub-skill 결과를 순차 반영. 누락 시 Eval FAIL.
|
|
90
|
-
3. **구현** — 아래 "스택 치환 규칙" 엄수, sub-skill findings 를 sprint-contract.md FE 섹션 `## Sub-skill Findings` 블록에 인용
|
|
91
|
-
4. **Self-Verification** — `ref.validation.pre_eval_gate` 에 나열된 명령 전부 실행
|
|
92
|
-
5. **Handoff** → Evaluator-Functional
|
|
93
|
-
|
|
94
|
-
### 2.1 Sub-skill 호출 시퀀스 (필수)
|
|
95
|
-
|
|
96
|
-
각 sub-skill 호출 직전 visibility partial update:
|
|
97
|
-
```bash
|
|
98
|
-
bash scripts/harness-progress-set.sh . \
|
|
99
|
-
'.meetings.active = ["generator-frontend","<sub-skill>"] | .meetings.cadence = "sub-skill"'
|
|
100
|
-
```
|
|
101
|
-
호출 후 `meetings.active = []` 복귀.
|
|
102
|
-
|
|
103
|
-
| # | Sub-skill (agency-agents 흡수처) | 산출물 (FE 섹션 인용) |
|
|
104
|
-
|---|----------------------------------|------------------------|
|
|
105
|
-
| 1 | `engineering-{react,flutter}-developer` (CTO 흡수) | 컴포넌트 골격 + state 관리 결정 |
|
|
106
|
-
| 2 | `design/ux-strategy` (Generator-Designer 흡수) | 사용자 흐름 / 정보 구조 검증 |
|
|
107
|
-
| 3 | `design/ui-component-spec` (Generator-Designer 흡수) | 토큰 / variant / state 매핑 |
|
|
108
|
-
| 4 | `engineering-accessibility-reviewer` (CTO 흡수) | WCAG AA + 키보드 네비 체크 |
|
|
109
|
-
| 5 | `engineering-performance-engineer` (CTO 흡수) | RSC / hydration / observer 결정 |
|
|
110
|
-
|
|
111
|
-
빈 `## Sub-skill Findings` = Eval FAIL 으로 처리됨 (Evaluator-Code-Quality 게이트).
|
|
112
|
-
|
|
113
|
-
## 스택 치환 규칙 (Adaptive Core)
|
|
114
|
-
|
|
115
|
-
구현 시 **모든 스택 의존 값은 ref-docs 에서 치환**한다:
|
|
116
|
-
|
|
117
|
-
| 치환 키 | 출처 | 예시 값 |
|
|
118
|
-
|---------|------|---------|
|
|
119
|
-
| `<source_roots>` | `ref.paths.source_roots` | Swift: `Sources/` · Flutter: `lib/` · Vue: `src/` |
|
|
120
|
-
| `<test_roots>` | `ref.paths.test_roots` | Swift: `Tests/` · Flutter: `test/` · 일반 웹: `tests/` |
|
|
121
|
-
| `<dev_command>` | `ref.runner.dev_command` | Swift: `xcodebuild -scheme X build` · 기타: ref-docs 참조 |
|
|
122
|
-
| `<api_base_url>` | `ref.api.base_url` | 네이티브 앱: `null` (무시) · 웹: ref-docs 참조 |
|
|
123
|
-
| `<pre_eval_gate>` | `ref.validation.pre_eval_gate` | Swift: `[swift build, swiftlint]` |
|
|
124
|
-
| `<anti_patterns>` | `ref.validation.anti_pattern_rules` | 스택별 grep/lint 규칙 |
|
|
125
|
-
|
|
126
|
-
코드 생성 시 특정 프레임워크 전용 지시(예: "컴포넌트를 X 스타일로 만들어라")는 하지 않는다. 대신 ref-docs 본문의 "Best Practices" 섹션을 존중하여 해당 스택 이디엄으로 작성한다.
|
|
127
|
-
|
|
128
|
-
## 핵심 규칙 (스택 무관)
|
|
129
|
-
|
|
130
|
-
- api-contract.json 이 있으면 그에 정의된 엔드포인트만 호출/매핑
|
|
131
|
-
- 로딩·에러·빈 상태 3가지 필수 처리 (UI 가 있는 스택에서)
|
|
132
|
-
- 접근성·키보드 네비게이션 기본 고려 (ref.validation.visual 설정에 따름)
|
|
133
|
-
- 로케일·i18n 은 ref-docs 본문 가이드 준수
|
|
134
|
-
|
|
135
|
-
## 금지 사항
|
|
136
|
-
|
|
137
|
-
- **ref.paths.source_roots 밖의 프로덕션 코드 수정** (BE/HARNESS 영역 침범 금지)
|
|
138
|
-
- api-contract.json 에 없는 엔드포인트 호출 (base_url 이 있는 경우)
|
|
139
|
-
- `.harness/ref/` 직접 편집 (refresh 는 `bash init.sh refresh-ref` 경유)
|
|
140
|
-
- 공통 `generator-frontend.md` / 스택별 `generator-frontend-<stack>.md` gotcha 에 적힌 실수 반복
|
|
141
|
-
|
|
142
|
-
## 디버깅 / Fallback
|
|
143
|
-
|
|
144
|
-
- `ref-docs` 가 placeholder 상태(`generator: "init-ref-docs.sh (placeholder)"`) → 본격 구현 전에 Claude 세션에서 `bash init.sh refresh-ref fe <stack>` 후 프롬프트 실행으로 본문 채우기를 권고
|
|
145
|
-
- `scan-result.json.tech_stack_confidence == "unknown"` → 사용자에게 객관식(감지 후보 top 5 + 자유입력 fallback)으로 스택 확인 요청
|
|
146
|
-
|
|
147
|
-
## ⚠ MANDATORY — 동적 Gotcha / Convention 등록 (Generator 도 mandatory)
|
|
148
|
-
|
|
149
|
-
작업 완료 시 `.harness/actions/gen-report-{FEATURE_ID}.md` 를 작성하고 끝에 **`gotcha_candidates` 와 `convention_candidates` fenced JSON 블록 두 개**를 포함한다 (비어 있으면 `[]`). harness-next.sh / Team Lead 가 자동 스캔하여 `.harness/gotchas/` `.harness/conventions/` 에 dedup append.
|
|
150
|
-
|
|
151
|
-
**FE Generator 가 등록해야 하는 패턴** (자기 발견):
|
|
152
|
-
- RSC↔CC 경계 위반, missing 'use client', not-found.tsx/error.tsx 누락, typed-routes 미스매치 → `gotcha_candidates` (target=generator-frontend)
|
|
153
|
-
- 일관된 컴포넌트/훅/스타일 룰, 폴더 구조, shadcn 사용 패턴 → `convention_candidates` (scope=generator-frontend)
|
|
154
|
-
|
|
155
|
-
상세 스키마 / `gen-report-{FEATURE_ID}.md` 형식 → [공통 가이드 — dynamic-registration](../_shared/dynamic-registration.md)
|