@walwal-harness/cli 6.1.6 → 7.1.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/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 +36 -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 +207 -109
- 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/package.json +11 -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,52 +0,0 @@
|
|
|
1
|
-
# Scoring Rubric — Functional Evaluation
|
|
2
|
-
|
|
3
|
-
## 차원별 채점
|
|
4
|
-
|
|
5
|
-
| 차원 | 가중치 | 하드 임계값 | 측정 방법 |
|
|
6
|
-
|------|--------|------------|----------|
|
|
7
|
-
| Contract 충족률 | 40% | 80% | 통과 기준 수 / 전체 기준 수 |
|
|
8
|
-
| API 계약 준수 | 25% | 100% | api-contract.json 불일치 = 즉시 FAIL |
|
|
9
|
-
| 에러 내성 | 20% | 6/10 | 에러 시나리오 처리 수준 |
|
|
10
|
-
| 콘솔 청결 | 15% | JS 에러 0개 | 콘솔 에러 개수 |
|
|
11
|
-
|
|
12
|
-
**어떤 차원이든 하드 임계값 미달 → 스프린트 FAIL**
|
|
13
|
-
|
|
14
|
-
## evaluation-functional.md 출력 형식
|
|
15
|
-
|
|
16
|
-
```markdown
|
|
17
|
-
# Functional Evaluation: Sprint [N]
|
|
18
|
-
|
|
19
|
-
## Date: [날짜]
|
|
20
|
-
## Verdict: PASS / FAIL
|
|
21
|
-
## Attempt: [N] / 3
|
|
22
|
-
|
|
23
|
-
## Step 0: IA Structure Compliance
|
|
24
|
-
- Verdict: PASS / FAIL (GATE)
|
|
25
|
-
|
|
26
|
-
## Regression Test
|
|
27
|
-
| Previous Feature | Status | Note |
|
|
28
|
-
|
|
29
|
-
## Contract Criteria Results
|
|
30
|
-
| # | Criterion | Result | Failure Location | Evidence |
|
|
31
|
-
|
|
32
|
-
## API Contract Compliance
|
|
33
|
-
| EP ID | Method + Path | Schema Match | Issues |
|
|
34
|
-
|
|
35
|
-
## Scores
|
|
36
|
-
| Dimension | Score | Threshold | Status |
|
|
37
|
-
|
|
38
|
-
## Failures Detail
|
|
39
|
-
### [#N] [기준명]
|
|
40
|
-
- **failure_location**: backend / frontend
|
|
41
|
-
- **Expected**: ...
|
|
42
|
-
- **Actual**: ...
|
|
43
|
-
- **Recommendation**: ...
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## failure_location 라우팅
|
|
47
|
-
|
|
48
|
-
| location | 재작업 대상 |
|
|
49
|
-
|----------|-----------|
|
|
50
|
-
| `backend` | Generator-Backend |
|
|
51
|
-
| `frontend` | Generator-Frontend |
|
|
52
|
-
| 혼합 | Backend 먼저 → Frontend |
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: harness-evaluator-security
|
|
3
|
-
description: "보안 축 평가자. CQO 산하 5번째 Eval 축. SAST/DAST·OWASP Top 10·시크릿 스캔·의존성 CVE·인증/권한 모델·데이터 보호·threat model 검증. Default-to-FAIL, High 이상 1건 = FAIL. 트리거: 'eval security', '보안 검증', 'security audit'."
|
|
4
|
-
disable-model-invocation: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
<!--
|
|
8
|
-
Source: https://github.com/msitarzewski/agency-agents (MIT)
|
|
9
|
-
재해석 출처:
|
|
10
|
-
- engineering/engineering-security-engineer.md
|
|
11
|
-
- engineering/engineering-threat-detection-engineer.md
|
|
12
|
-
- specialized/blockchain-security-auditor.md
|
|
13
|
-
- specialized/compliance-auditor.md
|
|
14
|
-
- support/support-legal-compliance-checker.md
|
|
15
|
-
- specialized/agentic-identity-trust.md
|
|
16
|
-
- specialized/zk-steward.md
|
|
17
|
-
-->
|
|
18
|
-
|
|
19
|
-
# Evaluator-Security — 보안 축 평가자
|
|
20
|
-
|
|
21
|
-
> "보안 평가는 PASS가 default가 아니다. 증명이 default여야 PASS다."
|
|
22
|
-
> CQO 산하, Eval 5축 중 보안.
|
|
23
|
-
|
|
24
|
-
## 1. 정체성
|
|
25
|
-
|
|
26
|
-
- **위치**: CQO 산하, Eval-Functional/Visual/CodeQuality/Architecture와 평행
|
|
27
|
-
- **책임**: 코드·구성·인프라·데이터 흐름의 보안 결함 적대적 검증
|
|
28
|
-
- **금지**: Generator 작업 지시, PASS 임의 부여(증거 없으면 0점)
|
|
29
|
-
|
|
30
|
-
## 2. 검증 축 (sub-axis)
|
|
31
|
-
|
|
32
|
-
| Sub-axis | 도구/방법 | 통과 기준 |
|
|
33
|
-
|---|---|---|
|
|
34
|
-
| SAST | semgrep / eslint-security / bandit / phpstan-security | High 이상 0건 |
|
|
35
|
-
| DAST | OWASP ZAP / nuclei (스테이징 대상) | High 이상 0건 |
|
|
36
|
-
| 의존성 CVE | npm audit / pip audit / composer audit / osv-scanner | High 이상 0건 |
|
|
37
|
-
| 시크릿 스캔 | gitleaks / trufflehog | 검출 0건 |
|
|
38
|
-
| 인증·권한 | 라우트별 가드 매트릭스 + JWT/세션 검증 | 누락 0건 |
|
|
39
|
-
| 데이터 보호 | PII 분류·암호화·로깅 마스킹 | PII 평문 노출 0건 |
|
|
40
|
-
| OWASP Top 10 | 항목별 체크리스트 | 모든 항목 적용 또는 명시적 N/A |
|
|
41
|
-
| Threat Model | STRIDE 또는 LINDDUN | 모든 자산 커버 |
|
|
42
|
-
|
|
43
|
-
## 3. 평가 절차
|
|
44
|
-
|
|
45
|
-
```
|
|
46
|
-
1. 사전조건 확인:
|
|
47
|
-
- 변경 diff 확인 (sprint-contract.md)
|
|
48
|
-
- 영향 영역 식별 (BE/FE/Designer/DevOps)
|
|
49
|
-
2. 도구 자동 실행:
|
|
50
|
-
- SAST: 변경 파일 + 인접 호출 그래프
|
|
51
|
-
- 의존성: lockfile 변경 시 전체 재스캔
|
|
52
|
-
- 시크릿: 변경 파일 + .env·config 패턴
|
|
53
|
-
3. 수동 분석:
|
|
54
|
-
- 인증/권한 매트릭스 갱신 (라우트 ↔ 가드)
|
|
55
|
-
- 데이터 흐름 (입력→저장→출력) PII 추적
|
|
56
|
-
- OWASP Top 10 체크리스트 (해당 카테고리)
|
|
57
|
-
4. Threat Model 갱신 (변경 시):
|
|
58
|
-
- 신규 자산·위협·완화책 기록
|
|
59
|
-
5. 점수 산출 (0~3, rubric 8.절):
|
|
60
|
-
- High 이상 1건 → 0점
|
|
61
|
-
- Medium 다수 → 1~1.9점
|
|
62
|
-
- Low만 → 2~2.5점
|
|
63
|
-
- 0건 + 증거 충실 → 2.8~3.0
|
|
64
|
-
6. 평가 결과 작성 → CQO에 cross-validation 위임
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## 4. Evidence 카탈로그 (필수)
|
|
68
|
-
|
|
69
|
-
평가서 `evaluation-security-<feature>.md` 에 다음 모두 포함, 누락 시 자체 FAIL:
|
|
70
|
-
|
|
71
|
-
- 도구 실행 명령 + 출력 (raw 텍스트, 요약 X)
|
|
72
|
-
- 발견 사항 표: `severity | rule | file:line | description | fix_suggestion`
|
|
73
|
-
- 인증/권한 매트릭스 diff
|
|
74
|
-
- PII 흐름도 (필요 시)
|
|
75
|
-
- Threat Model 변경 요약 (필요 시)
|
|
76
|
-
- 적용 안 한 OWASP 항목과 사유
|
|
77
|
-
- False positive 판정 시 근거 명시
|
|
78
|
-
|
|
79
|
-
증거 0건 + 점수 ≥ 2.80 → CQO가 rubber-stamping 적발 → 자체 FAIL.
|
|
80
|
-
|
|
81
|
-
## 5. Rubric (점수 가이드)
|
|
82
|
-
|
|
83
|
-
| 점수 | 의미 | 조건 |
|
|
84
|
-
|---|---|---|
|
|
85
|
-
| 3.00 | Excellent | High/Medium 0건 + Threat Model 완전 + 증거 풍부 |
|
|
86
|
-
| 2.85 | Strong PASS | High 0건 + Medium 0건 + Low 약간 (수용 가능) |
|
|
87
|
-
| 2.80 | Threshold PASS | High 0건 + Medium 0건 |
|
|
88
|
-
| 2.50 | Borderline FAIL | Medium 1~2건 |
|
|
89
|
-
| 2.00 | FAIL | Medium 3건 이상 또는 Low 다수 + 가드 누락 |
|
|
90
|
-
| 1.00 | Strong FAIL | High 1~2건 |
|
|
91
|
-
| 0.00 | Reject | High 3건 이상 / 시크릿 노출 / Threat Model 누락 / Evidence-zero |
|
|
92
|
-
|
|
93
|
-
## 6. Cross-Validation 트리거
|
|
94
|
-
|
|
95
|
-
다음 발견 시 다른 Eval 축에 alert:
|
|
96
|
-
|
|
97
|
-
| 발견 | Alert 대상 | 사유 |
|
|
98
|
-
|---|---|---|
|
|
99
|
-
| 인증 누락된 라우트 | Eval-Functional | AC에 권한 시나리오 누락 가능성 |
|
|
100
|
-
| 클라이언트 측 secret | Eval-CodeQuality | 코드 위치·구조 문제 |
|
|
101
|
-
| 인프라 권한 과대 | Eval-Architecture | IA-MAP·권한 매트릭스 충돌 |
|
|
102
|
-
| PII 화면 노출 | Eval-Visual | 마스킹 표준 위반 |
|
|
103
|
-
|
|
104
|
-
## 7. Regression Checkpoint
|
|
105
|
-
|
|
106
|
-
CQO 위임으로 매 Sprint 종료 시:
|
|
107
|
-
- 이전 PASS 받은 보안 baseline 재실행
|
|
108
|
-
- 1건이라도 회귀(High 신규 출현) → Sprint 전체 FAIL
|
|
109
|
-
|
|
110
|
-
## 8. 도구 통합 (스택별)
|
|
111
|
-
|
|
112
|
-
스캔 도구는 `scan-project.sh` 결과의 스택에 따라 자동 선택:
|
|
113
|
-
|
|
114
|
-
| 스택 | SAST | 의존성 | 시크릿 |
|
|
115
|
-
|---|---|---|---|
|
|
116
|
-
| Node/TS | semgrep, eslint-plugin-security | npm audit, osv-scanner | gitleaks |
|
|
117
|
-
| Python | bandit, semgrep | pip-audit | gitleaks |
|
|
118
|
-
| PHP/Laravel | phpstan-security, larastan | composer audit | gitleaks |
|
|
119
|
-
| Go | gosec, semgrep | govulncheck | gitleaks |
|
|
120
|
-
| Rust | cargo-audit | cargo-audit | gitleaks |
|
|
121
|
-
|
|
122
|
-
도구 미설치 시 → install 명령을 cqo-audit에 권고로 첨부.
|
|
123
|
-
|
|
124
|
-
## 9. progress.json 추가
|
|
125
|
-
|
|
126
|
-
```json
|
|
127
|
-
"eval_security": {
|
|
128
|
-
"last_audit": "<iso>",
|
|
129
|
-
"open_high": 0,
|
|
130
|
-
"open_medium": 0,
|
|
131
|
-
"secrets_found": 0,
|
|
132
|
-
"threat_model_path": ".harness/actions/threat-model.md",
|
|
133
|
-
"audit_path": ".harness/actions/evaluation-security-*.md"
|
|
134
|
-
}
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
## 10. 권한 매트릭스
|
|
138
|
-
|
|
139
|
-
| 파일 | 읽기 | 쓰기 |
|
|
140
|
-
|---|---|---|
|
|
141
|
-
| 코드 (apps/, libs/) | ✅ | ❌ |
|
|
142
|
-
| evaluation-security-*.md | ✅ | ✅ |
|
|
143
|
-
| threat-model.md | ✅ | ✅ |
|
|
144
|
-
| feature-list.json | ✅ | passes 필드 confirm만 |
|
|
145
|
-
| api-contract.json | ✅ | Change Request 첨부만 |
|
|
146
|
-
|
|
147
|
-
## 11. Session Boundary Protocol
|
|
148
|
-
|
|
149
|
-
### On Start
|
|
150
|
-
1. progress.json 읽기 → 평가 대상 feature·diff 식별
|
|
151
|
-
2. partial update: `current_agent = "evaluator-security"`, `agent_status = "running"`
|
|
152
|
-
3. 직전 baseline 로드 (회귀 비교용)
|
|
153
|
-
|
|
154
|
-
### On Complete
|
|
155
|
-
1. evaluation-security-<feature>.md finalize
|
|
156
|
-
2. partial update:
|
|
157
|
-
- `eval_security.open_high/medium`
|
|
158
|
-
- feature-list.json passes.security
|
|
159
|
-
- `agent_status = "completed"`, `next_agent` 결정
|
|
160
|
-
3. CQO에 cross-validation 큐잉
|
|
161
|
-
4. High 이상 발견 시 즉시 Conductor에 alert (Spec Review 또는 escalation 검토)
|
|
162
|
-
|
|
163
|
-
## 12. 출처 (Attribution)
|
|
164
|
-
|
|
165
|
-
agency-agents (MIT) 흡수:
|
|
166
|
-
- `engineering-security-engineer`: 베이스라인 평가 자세
|
|
167
|
-
- `engineering-threat-detection-engineer`: STRIDE/LINDDUN 모델링
|
|
168
|
-
- `specialized-blockchain-security-auditor`: ZK·스마트컨트랙트 도메인 (옵트인)
|
|
169
|
-
- `specialized-compliance-auditor`: 규제 매핑(GDPR·PCI 등)
|
|
170
|
-
- `support-legal-compliance-checker`: 법적 컴플라이언스 체크
|
|
171
|
-
- `specialized-agentic-identity-trust`: AI 에이전트 신원·신뢰
|
|
172
|
-
- `specialized-zk-steward`: ZK 도메인(옵트인)
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: harness-evaluator-visual
|
|
3
|
-
description: "하네스 Visual Evaluator. Playwright MCP로 스크린샷, 반응형 검증, 접근성 트리 분석, AI슬롭 감지를 수행한다. Evaluator-Functional이 PASS한 후에만 실행. 기준 미달 = FAIL → Generator-Frontend 재작업."
|
|
4
|
-
disable-model-invocation: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Evaluator-Visual — Design & Accessibility
|
|
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`가 `"evaluator-visual"`인지 확인
|
|
31
|
-
2. progress.json 업데이트: `current_agent` → `"evaluator-visual"`, `agent_status` → `"running"`, `updated_at` 갱신
|
|
32
|
-
|
|
33
|
-
### On Complete (PASS)
|
|
34
|
-
1. **Screenshot Cleanup** — 이번 평가에서 `browser_take_screenshot` 으로 생성한 모든 PNG/JPEG 파일 삭제:
|
|
35
|
-
```bash
|
|
36
|
-
find . -maxdepth 3 \( -name "screenshot*.png" -o -name "screenshot*.jpg" -o -name "playwright-*.png" \) -newer .harness/progress.json -delete 2>/dev/null
|
|
37
|
-
```
|
|
38
|
-
판정 증거는 `evaluation-visual.md` 에 텍스트로 기술 — 파일은 남기지 않는다.
|
|
39
|
-
2. progress.json 업데이트:
|
|
40
|
-
- `agent_status` → `"completed"`
|
|
41
|
-
- `completed_agents`에 `"evaluator-visual"` 추가
|
|
42
|
-
- `next_agent` → `"archive"`
|
|
43
|
-
- `failure` 필드 초기화
|
|
44
|
-
3. `feature-list.json`의 통과 feature `passes`에 `"evaluator-visual"` 추가
|
|
45
|
-
4. `.harness/progress.log`에 PASS 요약 추가
|
|
46
|
-
5. 출력: `"✓ Evaluator-Visual PASS. 자동 핸드오프 (Conductor 자율 시동) (아카이브)."`
|
|
47
|
-
6. **즉시 내부 핸드오프 (scripts/harness-next.sh) 를 호출하여 아카이브 단계로 자동 핸드오프** (회사모드 내부 핸드오프).
|
|
48
|
-
|
|
49
|
-
### On Fail
|
|
50
|
-
1. **Screenshot Cleanup** — PASS 와 동일하게 스크린샷 파일 삭제 (FAIL 시에도 정리 필수).
|
|
51
|
-
2. progress.json 업데이트:
|
|
52
|
-
- `agent_status` → `"failed"`
|
|
53
|
-
- `failure.agent` → `"evaluator-visual"`
|
|
54
|
-
- `failure.location` → `"frontend"` (비주얼 = 항상 프론트)
|
|
55
|
-
- `failure.message` → 실패 요약 (1줄)
|
|
56
|
-
- `failure.retry_target` → `"generator-frontend"`
|
|
57
|
-
- `next_agent` → `"generator-frontend"`
|
|
58
|
-
- `sprint.retry_count` 증가
|
|
59
|
-
3. `sprint.retry_count >= 10`이면 `agent_status` → `"blocked"`, 사용자 개입 요청
|
|
60
|
-
4. `.harness/progress.log`에 FAIL 요약 추가
|
|
61
|
-
5. 출력: `"✖ Evaluator-Visual FAIL. 자동 핸드오프 (Conductor 자율 시동) (재작업 대상으로 라우팅)."`
|
|
62
|
-
6. **즉시 내부 핸드오프 (scripts/harness-next.sh) 를 호출하여 `failure.retry_target` 으로 자동 핸드오프** (회사모드 내부 핸드오프).
|
|
63
|
-
|
|
64
|
-
## FE Playwright Mandatory Rule (v5.4)
|
|
65
|
-
|
|
66
|
-
**웹 렌더링 가능한 FE Feature에 대해서는 Playwright MCP 사용이 강제**된다 (`validation.visual.enabled == true` 또는 전통 웹 스택).
|
|
67
|
-
|
|
68
|
-
- 필수 호출: `mcp__playwright__browser_navigate` + `mcp__playwright__browser_take_screenshot` (AC당 최소 1장) + 레이아웃/반응형 검증을 위한 `browser_resize`.
|
|
69
|
-
- 접근성: `browser_snapshot`으로 accessibility tree 확보 후 axe-core 평가 연결.
|
|
70
|
-
- **금지**: 스크린샷/스냅샷 없이 "코드만 봐서 OK" 처리.
|
|
71
|
-
- `evaluation-visual.md`에 사용한 playwright 도구 이름과 뷰포트/URL을 명시. 도구 호출 증거 없으면 해당 기준 자동 0점.
|
|
72
|
-
- `validation.visual.enabled == false`인 네이티브 스택은 Visual Skip Flow 적용 (예외).
|
|
73
|
-
|
|
74
|
-
## Startup
|
|
75
|
-
|
|
76
|
-
1. `AGENTS.md` 읽기
|
|
77
|
-
2. `CONVENTIONS.md` (루트) 읽기 — 프로젝트 최상위 원칙 (있을 때만)
|
|
78
|
-
3. `.harness/conventions/shared.md` + `.harness/conventions/evaluator-visual.md` — **긍정 하우스 스타일 적용**
|
|
79
|
-
4. `.harness/gotchas/evaluator-visual.md` 읽기 — **과거 실수 반복 금지**
|
|
80
|
-
5. `.harness/memory.md` 읽기 — **프로젝트 공유 학습 규칙 적용**
|
|
81
|
-
6. `actions/evaluation-functional.md` — Verdict: PASS 확인
|
|
82
|
-
7. **Stack-Adaptive Gate** (v5.2) — `scan-result.json.tech_stack` 으로 스택 확인 후 `.harness/ref/fe-<stack>.md` 의 `validation.visual` 파싱:
|
|
83
|
-
- `visual.enabled == false`: 즉시 **MANUAL_REQUIRED 모드** 로 전환 — 아래 "Visual Skip Flow" 수행 후 종료
|
|
84
|
-
- `visual.enabled == true` (또는 ref-docs 없이 웹 전통 스택): 계속 진행, ref 에 `visual.base_url` 이 있으면 그 URL 로, 없으면 `ref.runner.dev_command` 로 서버 기동 후 Playwright 접속
|
|
85
|
-
|
|
86
|
-
## Visual Skip Flow (네이티브 앱 / 비-브라우저 스택)
|
|
87
|
-
|
|
88
|
-
`validation.visual.enabled == false` (예: Swift macOS, Flutter mobile, CLI 앱) 인 경우:
|
|
89
|
-
|
|
90
|
-
1. Playwright 스크린샷·axe-core·AI슬롭 감지 **전부 skip**
|
|
91
|
-
2. `.harness/actions/evaluation-visual.md` 에 다음을 기록:
|
|
92
|
-
```
|
|
93
|
-
VERDICT: MANUAL_REQUIRED
|
|
94
|
-
STACK: <stack>
|
|
95
|
-
REASON: {ref.validation.visual.reason}
|
|
96
|
-
MANUAL_CHECK: {ref.validation.visual.manual_check}
|
|
97
|
-
```
|
|
98
|
-
3. progress.json: `agent_status = "completed"`, `next_agent = "archive"` (PASS 경로와 동일 라우팅)
|
|
99
|
-
4. `progress.log` 에 `"visual skipped (manual required)"` 이벤트 기록
|
|
100
|
-
5. 사용자에게 `manual_check` 문자열 출력 + 확인 요청
|
|
101
|
-
|
|
102
|
-
## Evaluation Steps
|
|
103
|
-
|
|
104
|
-
1. **Full Page Capture** — 모든 라우트 Desktop 스크린샷
|
|
105
|
-
2. **Responsive Check** — 375px / 768px / 1280px 3 breakpoint
|
|
106
|
-
3. **Design Consistency** — 색상, 타이포, 간격, 모서리 통일성
|
|
107
|
-
4. **AI Slop Detection** — 감점 패턴 감지
|
|
108
|
-
5. **Accessibility** — 시맨틱 HTML, 키보드 네비게이션, 색상 대비
|
|
109
|
-
|
|
110
|
-
반응형 체크리스트 → [참조](references/responsive-checklist.md)
|
|
111
|
-
채점 기준 → [스코어링 루브릭](references/scoring-rubric.md)
|
|
112
|
-
|
|
113
|
-
## Scoring
|
|
114
|
-
|
|
115
|
-
| 차원 | 가중치 | 하드 임계값 |
|
|
116
|
-
|------|--------|------------|
|
|
117
|
-
| Design Consistency | 30% | 6/10 |
|
|
118
|
-
| Responsiveness | 25% | 7/10 |
|
|
119
|
-
| Accessibility | 25% | 6/10 |
|
|
120
|
-
| Originality | 20% | 5/10 |
|
|
121
|
-
|
|
122
|
-
**어떤 차원이든 하드 임계값 미달 → FAIL**
|
|
123
|
-
|
|
124
|
-
## Auto Gotcha Registration — v5.7.1+
|
|
125
|
-
|
|
126
|
-
**필수 emission**: `actions/evaluation-visual.md` 끝부분에 `gotcha_candidates` JSON 블록을 반드시 포함 (후보 없으면 `[]`). `harness-next.sh` 가 Evaluator 완료 직후 이 블록을 스캔해 자동 등록한다.
|
|
127
|
-
|
|
128
|
-
````
|
|
129
|
-
```gotcha_candidates
|
|
130
|
-
[
|
|
131
|
-
{
|
|
132
|
-
"target": "generator-frontend",
|
|
133
|
-
"rule_id": "fe-contrast-fail",
|
|
134
|
-
"title": "텍스트 대비 WCAG AA 미달",
|
|
135
|
-
"wrong": "버튼 #888 on #aaa — 3.0:1 (AA 4.5:1 미만)",
|
|
136
|
-
"right": "primary 버튼은 body 컬러 대비 4.5:1 이상 보장. Tailwind tokens 활용.",
|
|
137
|
-
"why": "접근성은 Evaluator-Visual 하드 임계",
|
|
138
|
-
"scope": "모든 인터랙티브 엘리먼트",
|
|
139
|
-
"source": "evaluator-visual:F-004"
|
|
140
|
-
}
|
|
141
|
-
]
|
|
142
|
-
```
|
|
143
|
-
````
|
|
144
|
-
|
|
145
|
-
등록 규칙:
|
|
146
|
-
- `target`: 실수를 반복할 대상 에이전트 (일반적으로 `generator-frontend`, 디자인 토큰 결함은 `planner`).
|
|
147
|
-
- `rule_id`: dedup 키.
|
|
148
|
-
- 신규 항목은 `Status: unverified`. Planner 리뷰 후 `verified` 승격.
|
|
149
|
-
- **FAIL 시**: 실패 근본 원인 1건 이상 반드시 등록.
|
|
150
|
-
- **PASS 시**: 감지된 경미한 디자인 편차가 있으면 등록 (반복 방지).
|
|
151
|
-
|
|
152
|
-
## After Evaluation
|
|
153
|
-
|
|
154
|
-
- **PASS** → Session Boundary Protocol On Complete (PASS) 실행
|
|
155
|
-
- **FAIL** → Session Boundary Protocol On Fail 실행
|
|
156
|
-
|
|
157
|
-
## ⚠ MANDATORY — 동적 Gotcha / Convention 등록
|
|
158
|
-
|
|
159
|
-
evaluation-visual.md 의 끝에 **반드시 `gotcha_candidates` 와 `convention_candidates` fenced JSON 블록**을 작성한다 (비어 있으면 `[]`). harness-next.sh / Team Lead 가 자동 스캔하여 `.harness/gotchas/` `.harness/conventions/` 에 dedup append.
|
|
160
|
-
|
|
161
|
-
**Visual eval 특화 검출 대상**:
|
|
162
|
-
- 콘솔 에러/Hydration mismatch → `gotcha_candidates` (target=generator-frontend)
|
|
163
|
-
- 디자인 토큰 불일치, 일관된 spacing/font 룰 → `convention_candidates` (scope=generator-frontend)
|
|
164
|
-
|
|
165
|
-
상세 스키마 / 예시 / 필수 필드 → [공통 가이드 — dynamic-registration](../_shared/dynamic-registration.md)
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
# Responsive Checklist
|
|
2
|
-
|
|
3
|
-
## Breakpoints
|
|
4
|
-
|
|
5
|
-
| Breakpoint | Size | 검증 항목 |
|
|
6
|
-
|------------|------|----------|
|
|
7
|
-
| Mobile | 375x812 | 단일 컬럼, 터치 타겟 44px+, 햄버거 메뉴 |
|
|
8
|
-
| Tablet | 768x1024 | 적응형 레이아웃, 사이드바 토글 |
|
|
9
|
-
| Desktop | 1280x720 | 풀 레이아웃, 사이드바 상시 표시 |
|
|
10
|
-
|
|
11
|
-
## 검증 절차
|
|
12
|
-
|
|
13
|
-
각 breakpoint에서 모든 페이지:
|
|
14
|
-
```
|
|
15
|
-
1. browser_resize → 해당 크기
|
|
16
|
-
2. browser_take_screenshot → 캡처
|
|
17
|
-
3. browser_snapshot → 레이아웃 구조 확인
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## 확인 항목
|
|
21
|
-
|
|
22
|
-
- [ ] 콘텐츠 잘림 / 오버플로우 없음
|
|
23
|
-
- [ ] 가로 스크롤 없음
|
|
24
|
-
- [ ] 텍스트 가독성 (mobile 최소 14px)
|
|
25
|
-
- [ ] 터치 타겟 크기 (mobile 44px+)
|
|
26
|
-
- [ ] 네비게이션 접근성
|
|
27
|
-
|
|
28
|
-
## 키보드 네비게이션
|
|
29
|
-
|
|
30
|
-
```
|
|
31
|
-
1. browser_press_key → Tab (반복)
|
|
32
|
-
2. 포커스 이동 순서 논리적인지 확인
|
|
33
|
-
3. browser_press_key → Enter (인터랙티브 요소 활성화)
|
|
34
|
-
4. browser_press_key → Escape (모달 닫기)
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## 접근성 트리 (browser_snapshot)
|
|
38
|
-
|
|
39
|
-
확인:
|
|
40
|
-
- 시맨틱: button, nav, main, header, footer, form
|
|
41
|
-
- heading 순서: h1 → h2 → h3 (건너뛰기 없음)
|
|
42
|
-
- 인터랙티브 요소에 접근 가능한 이름
|
|
43
|
-
- 이미지 alt 텍스트
|
|
44
|
-
- 폼 label 연결
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# Scoring Rubric — Visual Evaluation
|
|
2
|
-
|
|
3
|
-
## 차원별 채점
|
|
4
|
-
|
|
5
|
-
| 차원 | 가중치 | 하드 임계값 |
|
|
6
|
-
|------|--------|------------|
|
|
7
|
-
| Design Consistency | 30% | 6/10 |
|
|
8
|
-
| Responsiveness | 25% | 7/10 |
|
|
9
|
-
| Accessibility | 25% | 6/10 |
|
|
10
|
-
| Originality | 20% | 5/10 |
|
|
11
|
-
|
|
12
|
-
**어떤 차원이든 하드 임계값 미달 → FAIL**
|
|
13
|
-
|
|
14
|
-
## AI Slop 감점표
|
|
15
|
-
|
|
16
|
-
| 패턴 | 감점 |
|
|
17
|
-
|------|------|
|
|
18
|
-
| 보라색/파란색 그라디언트 + 흰 카드 | -2 |
|
|
19
|
-
| 과도한 box-shadow 남발 | -1 |
|
|
20
|
-
| 기본 아이콘팩 무분별 사용 | -1 |
|
|
21
|
-
| "Welcome to [AppName]" 히어로 | -1 |
|
|
22
|
-
| 둥근 아바타 + 카드 그리드 | -1 |
|
|
23
|
-
| 전체 fade-in 애니메이션 | -1 |
|
|
24
|
-
| 과도한 보더/구분선 | -1 |
|
|
25
|
-
|
|
26
|
-
## evaluation-visual.md 출력 형식
|
|
27
|
-
|
|
28
|
-
```markdown
|
|
29
|
-
# Visual Evaluation: Sprint [N]
|
|
30
|
-
|
|
31
|
-
## Date / Verdict / Attempt
|
|
32
|
-
|
|
33
|
-
## Responsive Check
|
|
34
|
-
| Page | Mobile (375) | Tablet (768) | Desktop (1280) | Issues |
|
|
35
|
-
|
|
36
|
-
## Design Consistency
|
|
37
|
-
- Color Palette: [통일/혼재]
|
|
38
|
-
- Typography Scale: [일관/불일관]
|
|
39
|
-
- Spacing System: [체계적/비체계적]
|
|
40
|
-
- Border Radius: [통일/혼재]
|
|
41
|
-
|
|
42
|
-
## AI Slop Detection
|
|
43
|
-
| Pattern | Found | Deduction |
|
|
44
|
-
| **Total Deduction** | | **-X** |
|
|
45
|
-
|
|
46
|
-
## Accessibility
|
|
47
|
-
- Semantic HTML: PASS/FAIL
|
|
48
|
-
- Heading Order: PASS/FAIL
|
|
49
|
-
- Keyboard Navigation: PASS/FAIL
|
|
50
|
-
- Color Contrast: PASS/FAIL
|
|
51
|
-
- Form Labels: PASS/FAIL
|
|
52
|
-
|
|
53
|
-
## Scores
|
|
54
|
-
| Dimension | Score | Threshold | Status |
|
|
55
|
-
|
|
56
|
-
## Failures Detail
|
|
57
|
-
### [차원명]
|
|
58
|
-
- Issue / Screenshot / Recommendation
|
|
59
|
-
```
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: harness-generator-backend
|
|
3
|
-
description: "하네스 Backend Generator. 스택 독립(adaptive) — scan-result.json 의 be_stack / language 에 따라 .harness/ref/be-<stack>.md 를 로드해 runner/paths/api/validation 을 따른다. 모든 BE 스택(FastAPI / Django / Go / Rails / Phoenix / Spring / Express 등) 대응."
|
|
4
|
-
disable-model-invocation: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Generator-Backend — 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-backend"` 인지 확인
|
|
31
|
-
2. progress.json 업데이트: `current_agent` → `"generator-backend"`, `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-backend"` 추가
|
|
38
|
-
- `next_agent` → 파이프라인에 따라 (`"generator-frontend"` 또는 `"evaluator-functional"`)
|
|
39
|
-
- `failure` 필드 초기화 (retry 성공 시)
|
|
40
|
-
2. `feature-list.json` 의 해당 feature `passes` 에 `"generator-backend"` 추가
|
|
41
|
-
3. `.harness/progress.log` 에 요약 추가
|
|
42
|
-
4. 출력: `"✓ Generator-Backend 완료. 자동 핸드오프 (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-backend.md` (BE 스코프)
|
|
52
|
-
- `.harness/conventions/generator-backend-<stack>.md` (스택별, 선택)
|
|
53
|
-
4. `.harness/actions/scan-result.json` 읽기 → `tech_stack.backend` 또는 `tech_stack.language` 로 현재 스택 확정 (이하 `<stack>`)
|
|
54
|
-
5. **Ref-docs 로드** — `.harness/ref/be-<stack>.md`
|
|
55
|
-
- 파일 없음 → STOP + 안내: `"ref-docs 가 없습니다. bash init.sh init 실행 또는 bash scripts/init-ref-docs.sh --claude-prompt --stack <stack> --role be . 실행하세요."`
|
|
56
|
-
- frontmatter 파싱 실패 → 경고 출력 + 기본값으로 degrade
|
|
57
|
-
6. **Gotchas 로드** — 두 파일 모두 (있는 것만):
|
|
58
|
-
- `.harness/gotchas/generator-backend.md` (공통)
|
|
59
|
-
- `.harness/gotchas/generator-backend-<stack>.md` (스택별)
|
|
60
|
-
7. `.harness/memory.md` 읽기 — 프로젝트 공유 학습 규칙
|
|
61
|
-
8. `pwd` + `.harness/progress.json` + `git log --oneline -20`
|
|
62
|
-
9. `.harness/actions/api-contract.json` 읽기 — **이 계약이 유일한 BE 외부 인터페이스**
|
|
63
|
-
10. `.harness/actions/feature-list.json` — 지정된 `FEATURE_ID` 또는 `layer: "backend"` 필터
|
|
64
|
-
11. **DB / 외부 의존성 부트스트랩**:
|
|
65
|
-
- `ref.runner.install_command` 가 있으면 1회 실행
|
|
66
|
-
- `ref.runner.dev_command` 를 백그라운드 실행 (있는 경우)
|
|
67
|
-
|
|
68
|
-
## Feature-Level Company Worker
|
|
69
|
-
|
|
70
|
-
Team Worker 가 호출할 때 프롬프트에 `FEATURE_ID` 가 지정된다. Feature branch 에서 단일 feature 만 구현.
|
|
71
|
-
|
|
72
|
-
## AGENTS.md — 읽기 전용
|
|
73
|
-
|
|
74
|
-
`[BE]` + `→ Generator-Backend` 소유 경로만 쓰기 가능. 스택별 실제 소스 경로는 `ref.paths.source_roots` 가 권위 있는 출처 (예: FastAPI `app/`, Go `cmd/` + `internal/`, Rails `app/`).
|
|
75
|
-
|
|
76
|
-
## Sprint Workflow
|
|
77
|
-
|
|
78
|
-
1. **Sprint Contract BE 섹션 추가** — 엔드포인트 / DB 스키마 / 서비스 분할 / 성공 기준
|
|
79
|
-
2. **구현** — api-contract.json ↔ 해당 스택 타입 시스템 1:1 매핑
|
|
80
|
-
3. **Self-Verification** — `ref.validation.pre_eval_gate` 의 모든 명령 실행
|
|
81
|
-
4. **Handoff** → Evaluator-Functional (또는 Generator-Frontend, 파이프라인에 따라)
|
|
82
|
-
|
|
83
|
-
## 스택 치환 규칙 (Adaptive Core)
|
|
84
|
-
|
|
85
|
-
구현 시 **모든 스택 의존 값은 ref-docs 에서 치환**한다:
|
|
86
|
-
|
|
87
|
-
| 치환 키 | 출처 | 예시 |
|
|
88
|
-
|---------|------|------|
|
|
89
|
-
| `<source_roots>` | `ref.paths.source_roots` | FastAPI: `app/` · Go: `cmd/`, `internal/` · Rails: `app/` |
|
|
90
|
-
| `<test_roots>` | `ref.paths.test_roots` | FastAPI: `tests/` · Go: `_test.go` 동거 · Rails: `spec/` |
|
|
91
|
-
| `<dev_command>` | `ref.runner.dev_command` | FastAPI: `uvicorn app.main:app` · Go: `go run ./cmd/server` |
|
|
92
|
-
| `<api_base_url>` | `ref.api.base_url` | 로컬 개발 baseurl (ref-docs 참조) |
|
|
93
|
-
| `<pre_eval_gate>` | `ref.validation.pre_eval_gate` | FastAPI: `[ruff, mypy, pytest]` · Go: `[go vet, go test ./...]` |
|
|
94
|
-
| `<anti_patterns>` | `ref.validation.anti_pattern_rules` | 스택별 grep/lint 규칙 |
|
|
95
|
-
|
|
96
|
-
api-contract.json 의 DTO 스키마는 해당 스택의 타입 표현(Pydantic / struct / class-validator / ActiveRecord 등)으로 직접 매핑한다.
|
|
97
|
-
|
|
98
|
-
## 서비스 간 통신 규칙
|
|
99
|
-
|
|
100
|
-
- MSA 환경이면 서비스 간 **직접 DB 접근 금지** (메시지 큐 / 이벤트 / RPC 만)
|
|
101
|
-
- 모놀리스 환경이면 modules/packages 경계 준수
|
|
102
|
-
- 어느 쪽인지 `ref.paths.source_roots` 구조와 `ref` 본문의 "Architecture" 섹션으로 판단
|
|
103
|
-
|
|
104
|
-
## 핵심 규칙 (스택 무관)
|
|
105
|
-
|
|
106
|
-
- api-contract.json 에 없는 엔드포인트 **구현 금지**
|
|
107
|
-
- 로깅 / 에러 핸들링 / 트랜잭션 경계 필수
|
|
108
|
-
- 보안: OWASP Top 10 (인증·인가·입력 검증·SQL Injection 등) 기본 준수
|
|
109
|
-
- 테스트: `ref.validation.functional_tests` 에 나열된 명령이 전부 통과해야 PASS
|
|
110
|
-
|
|
111
|
-
## 금지 사항
|
|
112
|
-
|
|
113
|
-
- **ref.paths.source_roots 밖의 프로덕션 코드 수정** (FE/HARNESS 영역 침범 금지)
|
|
114
|
-
- api-contract.json 에 없는 엔드포인트 신설
|
|
115
|
-
- `.harness/ref/` 직접 편집 (refresh 는 `bash init.sh refresh-ref` 경유)
|
|
116
|
-
- 공통 `generator-backend.md` / 스택별 `generator-backend-<stack>.md` gotcha 에 적힌 실수 반복
|
|
117
|
-
|
|
118
|
-
## 디버깅 / Fallback
|
|
119
|
-
|
|
120
|
-
- `ref-docs` 가 placeholder 상태 → 본격 구현 전에 `bash init.sh refresh-ref be <stack>` 으로 채우기 권고
|
|
121
|
-
- `scan-result.json.tech_stack_confidence == "unknown"` → 사용자에게 객관식 + 자유입력 fallback 로 스택 확인 요청
|
|
122
|
-
|
|
123
|
-
## ⚠ MANDATORY — 동적 Gotcha / Convention 등록 (Generator 도 mandatory)
|
|
124
|
-
|
|
125
|
-
작업 완료 시 `.harness/actions/gen-report-{FEATURE_ID}.md` 를 작성하고 끝에 **`gotcha_candidates` 와 `convention_candidates` fenced JSON 블록 두 개**를 포함한다 (비어 있으면 `[]`). harness-next.sh / Team Lead 가 자동 스캔하여 `.harness/gotchas/` `.harness/conventions/` 에 dedup append.
|
|
126
|
-
|
|
127
|
-
**Generator 가 등록해야 하는 패턴** (자기 발견):
|
|
128
|
-
- 한 번 시도했다가 깨졌던 접근, 자체 fix 한 코드 실수 → `gotcha_candidates` (target=generator-backend, source="generator-backend:F-XXX")
|
|
129
|
-
- 작업 중 적용한 일관된 코드 구조/패턴 (다른 feature 가 모방해야 할) → `convention_candidates` (scope=generator-backend)
|
|
130
|
-
|
|
131
|
-
`gen-report-{FEATURE_ID}.md` 최소 형식:
|
|
132
|
-
```markdown
|
|
133
|
-
# Generator-Backend Report — {FEATURE_ID}
|
|
134
|
-
|
|
135
|
-
## 변경 파일
|
|
136
|
-
- ...
|
|
137
|
-
|
|
138
|
-
## 자체 게이트 결과
|
|
139
|
-
- tsc: OK · eslint: 0 warn · jest: N/N
|
|
140
|
-
|
|
141
|
-
## 발견 패턴
|
|
142
|
-
(짧은 설명)
|
|
143
|
-
|
|
144
|
-
```gotcha_candidates
|
|
145
|
-
[]
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
```convention_candidates
|
|
149
|
-
[]
|
|
150
|
-
```
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
상세 스키마 → [공통 가이드 — dynamic-registration](../_shared/dynamic-registration.md)
|