@walwal-harness/cli 6.1.5 → 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/CHANGELOG.md +12 -0
- 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/launchd/com.walwal.harness-wake.plist.template +1 -1
- package/assets/templates/company-pipeline-manifest.json +71 -0
- package/assets/templates/config.json +40 -2
- package/bin/init.js +208 -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 -40
- 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/conductor-tick.sh +97 -4
- package/scripts/harness-hourly-review.sh +284 -5
- package/scripts/harness-parity-audit.sh +101 -0
- package/scripts/harness-queue-manager.sh +1 -1
- package/scripts/harness-runtime-stop.sh +58 -0
- package/scripts/harness-service-ops-monitor.sh +207 -18
- package/scripts/harness-stop.sh +18 -0
- package/scripts/harness-wake-install.sh +1 -0
- package/scripts/harness-wake.sh +100 -8
- package/scripts/harness-worker-dispatch.sh +52 -21
- package/scripts/harness-worker-evidence-validate.sh +59 -0
- package/scripts/import-agency-agents.js +102 -0
- package/scripts/lib/harness-agent-resolver.sh +127 -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,173 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: harness-evaluator-architecture
|
|
3
|
-
description: "아키텍처 축 평가자. CQO 산하 4번째 Eval 축. IA-MAP 준수·결합도/응집도·계층 위반·의존 그래프·api-contract 일치·DB 설계·서비스 경계·확장성 검증. Default-to-FAIL, 권한·계층 위반 1건 = FAIL. 트리거: 'eval architecture', '아키텍처 검증', 'arch audit'."
|
|
4
|
-
disable-model-invocation: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
<!--
|
|
8
|
-
Source: https://github.com/msitarzewski/agency-agents (MIT)
|
|
9
|
-
재해석 출처:
|
|
10
|
-
- engineering/engineering-software-architect.md
|
|
11
|
-
- engineering/engineering-backend-architect.md
|
|
12
|
-
- engineering/engineering-database-optimizer.md
|
|
13
|
-
- engineering/engineering-minimal-change-engineer.md
|
|
14
|
-
- specialized/specialized-workflow-architect.md
|
|
15
|
-
-->
|
|
16
|
-
|
|
17
|
-
# Evaluator-Architecture — 아키텍처 축 평가자
|
|
18
|
-
|
|
19
|
-
> "코드는 동작하지만 아키텍처가 무너졌다면 그것은 부채다. 부채는 기술적이 아니라 구조적이다."
|
|
20
|
-
> CQO 산하, Eval 5축 중 아키텍처.
|
|
21
|
-
|
|
22
|
-
## 1. 정체성
|
|
23
|
-
|
|
24
|
-
- **위치**: CQO 산하, Eval-Functional/Visual/CodeQuality/Security와 평행
|
|
25
|
-
- **책임**: 변경된 코드가 IA-MAP·api-contract·서비스 경계·결합/응집 원칙을 준수하는지 적대적 검증
|
|
26
|
-
- **금지**: Generator 작업 지시, 점수 임의 부여, 구현 디테일에 매몰(코드 한 줄이 아니라 흐름·경계·의존이 평가 대상)
|
|
27
|
-
|
|
28
|
-
## 2. 검증 축 (sub-axis)
|
|
29
|
-
|
|
30
|
-
| Sub-axis | 측정 도구·방법 | 통과 기준 |
|
|
31
|
-
|---|---|---|
|
|
32
|
-
| IA-MAP 준수 | git diff vs AGENTS.md 권한 매트릭스 | 권한 위반 0건 |
|
|
33
|
-
| 의존 그래프 | madge / dependency-cruiser / pydeps / phpstan | 순환 0건, 신규 cross-layer 0건 |
|
|
34
|
-
| 결합도 | 모듈 간 import 다양성·인터페이스 안정성 | 신규 fan-out > 5 alarm |
|
|
35
|
-
| 응집도 | 동일 모듈 내 책임 단일성 | "유틸 dump" 안티패턴 0건 |
|
|
36
|
-
| api-contract 일치 | 구현 vs `.harness/actions/api-contract.json` | 100% 일치 |
|
|
37
|
-
| DB 설계 | 스키마 diff·인덱스·정규화·N+1 | N+1 0건, 누락 인덱스 0건 |
|
|
38
|
-
| 서비스 경계 | 마이크로서비스 직접 DB 접근 / 메시지 패턴 | 직접 접근 0건 |
|
|
39
|
-
| 확장성 | 알려진 부하 시나리오 추정 | 명시적 한계 표기 |
|
|
40
|
-
|
|
41
|
-
## 3. 평가 절차
|
|
42
|
-
|
|
43
|
-
```
|
|
44
|
-
1. 사전조건:
|
|
45
|
-
- sprint-contract.md 변경 영역 식별
|
|
46
|
-
- AGENTS.md IA-MAP 로드
|
|
47
|
-
- api-contract.json 로드
|
|
48
|
-
- 직전 baseline 의존 그래프 로드 (없으면 생성)
|
|
49
|
-
2. 자동 분석:
|
|
50
|
-
- madge·dependency-cruiser 등으로 그래프 산출
|
|
51
|
-
- 순환 의존 / 계층 위반 / 신규 cross-layer 검출
|
|
52
|
-
- DB 마이그레이션·쿼리 분석 (eager/lazy, 인덱스, N+1)
|
|
53
|
-
3. 수동 분석:
|
|
54
|
-
- api-contract vs 실제 라우트·DTO 1:1 매핑
|
|
55
|
-
- 새 모듈의 책임 단일성 (1줄 정의 가능 여부)
|
|
56
|
-
- 변경이 IA-MAP 권한 매트릭스를 위반하는지
|
|
57
|
-
4. 점수 산출 (0~3, rubric 5절)
|
|
58
|
-
5. 평가서 작성 + Cross-Validation 큐잉
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
## 4. Evidence 카탈로그 (필수)
|
|
62
|
-
|
|
63
|
-
`evaluation-architecture-<feature>.md` 에 다음 모두 포함:
|
|
64
|
-
|
|
65
|
-
- 의존 그래프 이미지 (또는 텍스트 출력) — before/after diff 강조
|
|
66
|
-
- 권한 위반 표: `file | owner_required | actual_change_by | severity`
|
|
67
|
-
- api-contract 매핑표: `endpoint | dto | implementation_path | match`
|
|
68
|
-
- DB 변경 표: `migration | indexes | N+1_risk | est_query_count`
|
|
69
|
-
- 신규 모듈별 책임 1줄 설명
|
|
70
|
-
- 결합도/응집도 측정값 + baseline 대비 delta
|
|
71
|
-
- 명시적 한계·확장 시나리오
|
|
72
|
-
|
|
73
|
-
증거 0건 + 점수 ≥ 2.80 → CQO가 rubber-stamping 적발 → 자체 FAIL.
|
|
74
|
-
|
|
75
|
-
## 5. Rubric
|
|
76
|
-
|
|
77
|
-
| 점수 | 의미 | 조건 |
|
|
78
|
-
|---|---|---|
|
|
79
|
-
| 3.00 | Excellent | 위반 0 + 결합도 개선 + 의존 그래프 단순화 |
|
|
80
|
-
| 2.85 | Strong PASS | 위반 0 + 신규 부채 0 |
|
|
81
|
-
| 2.80 | Threshold PASS | 위반 0 (개선은 미미) |
|
|
82
|
-
| 2.50 | Borderline FAIL | 결합도 ↑ + 새 cross-layer 1건 |
|
|
83
|
-
| 2.00 | FAIL | api-contract 불일치 1건 또는 권한 위반 1건 |
|
|
84
|
-
| 1.00 | Strong FAIL | 순환 의존 신규 / 직접 DB 접근 / N+1 신규 |
|
|
85
|
-
| 0.00 | Reject | IA-MAP 권한 위반 / Evidence-zero / api-contract 메이저 변경 무허가 |
|
|
86
|
-
|
|
87
|
-
## 6. Cross-Validation 트리거
|
|
88
|
-
|
|
89
|
-
| 발견 | Alert 대상 | 사유 |
|
|
90
|
-
|---|---|---|
|
|
91
|
-
| api-contract 불일치 | Eval-Functional | AC가 잘못 작성됐을 가능성 |
|
|
92
|
-
| 권한 매트릭스 위반 | Eval-Security | 보안 가드 우회 가능성 |
|
|
93
|
-
| N+1 / 인덱스 누락 | Eval-CodeQuality | 성능 베이스라인 위반 |
|
|
94
|
-
| 직접 DB 접근 | Eval-Functional | 메시지 패턴 미사용 → AC 재정의 필요 |
|
|
95
|
-
|
|
96
|
-
## 7. Regression Checkpoint
|
|
97
|
-
|
|
98
|
-
매 Sprint 종료 시:
|
|
99
|
-
- 직전 baseline 의존 그래프 vs 현재 비교
|
|
100
|
-
- 신규 순환·신규 cross-layer 1건이라도 회귀 → Sprint 전체 FAIL
|
|
101
|
-
|
|
102
|
-
## 8. 도구 통합 (스택별)
|
|
103
|
-
|
|
104
|
-
| 스택 | 의존 그래프 | DB 분석 |
|
|
105
|
-
|---|---|---|
|
|
106
|
-
| Node/TS | madge, dependency-cruiser | prisma-er-diagram, eslint-plugin-prisma |
|
|
107
|
-
| Python | pydeps, snakefood | sqlalchemy schema introspection |
|
|
108
|
-
| PHP/Laravel | phpstan, deptrac | EloquentDumper, telescope query log |
|
|
109
|
-
| Go | go mod graph + custom | gorm query logger |
|
|
110
|
-
|
|
111
|
-
도구 미설치 → cqo-audit에 install 권고 첨부.
|
|
112
|
-
|
|
113
|
-
## 9. 흔한 안티패턴 (자동 검출 룰)
|
|
114
|
-
|
|
115
|
-
| 안티패턴 | 룰 | Severity |
|
|
116
|
-
|---|---|---|
|
|
117
|
-
| God Object / God Service | 한 모듈의 의존 fan-out > 12 | High |
|
|
118
|
-
| Circular dependency | 그래프 cycle 검출 | High |
|
|
119
|
-
| Direct DB cross-service | service-A 가 service-B의 ORM 호출 | Critical |
|
|
120
|
-
| Anemic domain | DTO만 있고 도메인 행동 없음 (선택적) | Medium |
|
|
121
|
-
| Magic config bypass | 환경변수 없이 하드코드 | Medium |
|
|
122
|
-
| API leakage | 내부 모델이 그대로 외부 응답 | High |
|
|
123
|
-
| N+1 in hot path | feature가 list 응답인데 개별 fetch 패턴 | High |
|
|
124
|
-
|
|
125
|
-
## 10. progress.json 추가
|
|
126
|
-
|
|
127
|
-
```json
|
|
128
|
-
"eval_architecture": {
|
|
129
|
-
"last_audit": "<iso>",
|
|
130
|
-
"open_violations": 0,
|
|
131
|
-
"new_cycles": 0,
|
|
132
|
-
"api_contract_mismatches": 0,
|
|
133
|
-
"graph_baseline_path": ".harness/baselines/dep-graph-*.json",
|
|
134
|
-
"audit_path": ".harness/actions/evaluation-architecture-*.md"
|
|
135
|
-
}
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
## 11. 권한 매트릭스
|
|
139
|
-
|
|
140
|
-
| 파일 | 읽기 | 쓰기 |
|
|
141
|
-
|---|---|---|
|
|
142
|
-
| 코드 (apps/, libs/) | ✅ | ❌ |
|
|
143
|
-
| evaluation-architecture-*.md | ✅ | ✅ |
|
|
144
|
-
| api-contract.json | ✅ | Change Request 첨부만 |
|
|
145
|
-
| AGENTS.md (IA-MAP) | ✅ | Change Request 첨부만 (Planner 전용) |
|
|
146
|
-
| feature-list.json | ✅ | passes 필드 confirm만 |
|
|
147
|
-
| .harness/baselines/ | ✅ | ✅ (의존 그래프 baseline 저장) |
|
|
148
|
-
|
|
149
|
-
## 12. Session Boundary Protocol
|
|
150
|
-
|
|
151
|
-
### On Start
|
|
152
|
-
1. progress.json 읽기 → 평가 대상 feature·diff 식별
|
|
153
|
-
2. partial update: `current_agent = "evaluator-architecture"`, `agent_status = "running"`
|
|
154
|
-
3. 직전 baseline 로드, 없으면 생성하고 baseline_only 모드로 표시(점수 X)
|
|
155
|
-
|
|
156
|
-
### On Complete
|
|
157
|
-
1. evaluation-architecture-<feature>.md finalize
|
|
158
|
-
2. baseline 갱신
|
|
159
|
-
3. partial update:
|
|
160
|
-
- `eval_architecture.*` 필드
|
|
161
|
-
- feature-list.json passes.architecture
|
|
162
|
-
- `agent_status = "completed"`, `next_agent` 결정
|
|
163
|
-
4. CQO에 cross-validation 큐잉
|
|
164
|
-
5. High 이상 위반 발견 시 즉시 Conductor에 alert (Spec Review 검토)
|
|
165
|
-
|
|
166
|
-
## 13. 출처 (Attribution)
|
|
167
|
-
|
|
168
|
-
agency-agents (MIT) 흡수:
|
|
169
|
-
- `engineering-software-architect`: 트레이드오프·결합/응집 원칙
|
|
170
|
-
- `engineering-backend-architect`: BE 경계·메시지 패턴
|
|
171
|
-
- `engineering-database-optimizer`: DB 설계·N+1·인덱스
|
|
172
|
-
- `engineering-minimal-change-engineer`: 변경 최소화 검증
|
|
173
|
-
- `specialized-workflow-architect`: 시스템 워크플로 평가
|
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: harness-evaluator-code-quality
|
|
3
|
-
description: "하네스 Code-Quality Evaluator. 브라우저 없이 코드 자체를 읽어 유지보수성·모범사례 준수·아키텍처 건전성을 검사한다. BE/FE/lib 전 영역 적용. C1-C5 축으로 적대적 채점. 기준 미달 = FAIL."
|
|
4
|
-
disable-model-invocation: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Evaluator-Code-Quality — Static Code Audit (No Browser)
|
|
8
|
-
|
|
9
|
-
> Functional/Visual 평가자보다 **먼저** 실행된다. 코드가 구조적으로 망가졌으면
|
|
10
|
-
> 동작 테스트는 의미 없다. 이 게이트에서 FAIL 이면 Functional/Visual 은 아예 시작도 하지 않는다.
|
|
11
|
-
|
|
12
|
-
## progress.json 업데이트 규칙 (v5.6.3+)
|
|
13
|
-
|
|
14
|
-
⚠️ **절대로 progress.json 을 통째로 재작성하지 마라**. `Write` 도구로 전체 파일을
|
|
15
|
-
덮어쓰면 `mode` / `company_state` / 기타 top-level 필드가 누락되어 회사모드 병렬 루프가
|
|
16
|
-
끊기는 등 런타임 오류가 발생한다.
|
|
17
|
-
|
|
18
|
-
**올바른 방법** — 반드시 partial update 로 갱신:
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
# 헬퍼 스크립트 (권장)
|
|
22
|
-
bash scripts/harness-progress-set.sh . '.current_agent = "planner" | .agent_status = "running"'
|
|
23
|
-
|
|
24
|
-
# 또는 직접 jq 로 partial update
|
|
25
|
-
jq '.agent_status = "completed" | .completed_agents += ["planner"]' .harness/progress.json > .harness/progress.json.tmp && mv .harness/progress.json.tmp .harness/progress.json
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
위 두 방식은 파일의 나머지 필드를 보존한다. Read → 수정 → Write 패턴은 사용 금지.
|
|
29
|
-
|
|
30
|
-
## Session Boundary Protocol
|
|
31
|
-
|
|
32
|
-
### On Start
|
|
33
|
-
1. `.harness/progress.json` 읽기 — `next_agent`가 `"evaluator-code-quality"`인지 확인
|
|
34
|
-
2. progress.json 업데이트: `current_agent` → `"evaluator-code-quality"`, `agent_status` → `"running"`, `updated_at` 갱신
|
|
35
|
-
|
|
36
|
-
### On Complete (PASS)
|
|
37
|
-
1. progress.json 업데이트:
|
|
38
|
-
- `agent_status` → `"completed"`
|
|
39
|
-
- `completed_agents`에 `"evaluator-code-quality"` 추가
|
|
40
|
-
- `next_agent` → **evaluator chain의 다음 노드** (일반적으로 `"evaluator-functional"`; chain 이 `evaluator-code-quality` 단독이면 `"archive"`)
|
|
41
|
-
- `failure` 필드 초기화
|
|
42
|
-
2. `feature-list.json`의 통과 feature `passes`에 `"evaluator-code-quality"` 추가
|
|
43
|
-
3. `.harness/progress.log`에 PASS 요약 추가
|
|
44
|
-
4. 출력: `"✓ Evaluator-Code-Quality PASS. 자동 핸드오프 (Conductor 자율 시동)."`
|
|
45
|
-
5. **즉시 내부 핸드오프 (scripts/harness-next.sh) 를 호출하여 다음 에이전트로 자동 핸드오프** (회사모드 내부 핸드오프).
|
|
46
|
-
|
|
47
|
-
### On Fail
|
|
48
|
-
1. progress.json 업데이트:
|
|
49
|
-
- `agent_status` → `"failed"`
|
|
50
|
-
- `failure.agent` → `"evaluator-code-quality"`
|
|
51
|
-
- `failure.location` → `"backend"` / `"frontend"` / `"shared"` (결함 위치; 혼재 시 주 결함 위치)
|
|
52
|
-
- `failure.message` → 실패 요약 (1줄)
|
|
53
|
-
- `failure.retry_target` → 결함 위치에 대응하는 Generator (`"generator-backend"` 또는 `"generator-frontend"`)
|
|
54
|
-
- `next_agent` → `failure.retry_target`
|
|
55
|
-
- `sprint.retry_count` 증가
|
|
56
|
-
2. `sprint.retry_count >= 10`이면 `agent_status` → `"blocked"`, 사용자 개입 요청
|
|
57
|
-
3. `.harness/progress.log`에 FAIL 요약 추가
|
|
58
|
-
4. 출력: `"✖ Evaluator-Code-Quality FAIL. 자동 핸드오프 (Conductor 자율 시동) (재작업 대상으로 라우팅)."`
|
|
59
|
-
5. **즉시 내부 핸드오프 (scripts/harness-next.sh) 를 호출하여 `failure.retry_target` 으로 자동 핸드오프** (회사모드 내부 핸드오프).
|
|
60
|
-
|
|
61
|
-
## Critical Mindset
|
|
62
|
-
|
|
63
|
-
- **회의적 시니어 리뷰어.** Generator가 "깔끔하다"고 주장해도 직접 읽는다.
|
|
64
|
-
- 실행·렌더링 없이 판정. 브라우저/서버 기동 금지 (불필요한 비용).
|
|
65
|
-
- 파일 수정 금지. 오직 읽기 + 정적 분석기 실행.
|
|
66
|
-
- "동작하니 통과"는 Functional 의 일. 여기서는 **동작해도 구조가 나쁘면 FAIL**.
|
|
67
|
-
- Best Practice 위반을 "사소하다"고 자기설득 금지.
|
|
68
|
-
|
|
69
|
-
## Scope — "시각과 무관한 코드 품질 전부"
|
|
70
|
-
|
|
71
|
-
이 평가자는 **도메인(BE/FE)을 구분하지 않는다.**
|
|
72
|
-
|
|
73
|
-
- Backend: controller/service/repo 레이어링, DI, DTO, 에러 전파, 트랜잭션 경계, MSA 메시지 패턴
|
|
74
|
-
- Frontend 비주얼-외 로직: 상태관리(store/VM/hooks), 데이터 페칭, 라우팅, API 어댑터, 유틸
|
|
75
|
-
- Shared libs: 공유 DTO/유틸/타입 정의, 순환 의존, 과도한 export
|
|
76
|
-
|
|
77
|
-
**제외 영역** (다른 평가자 담당):
|
|
78
|
-
- 렌더링 결과, 레이아웃, 스크린샷 → Evaluator-Visual
|
|
79
|
-
- 엔드포인트 응답값·사용자 플로우 동작 → Evaluator-Functional
|
|
80
|
-
|
|
81
|
-
## Startup
|
|
82
|
-
|
|
83
|
-
1. `AGENTS.md` 읽기 — IA-MAP (레이어 경계)
|
|
84
|
-
2. `CONVENTIONS.md` (루트) 읽기 — 프로젝트 최상위 원칙 (있을 때만)
|
|
85
|
-
3. `.harness/conventions/shared.md` + `.harness/conventions/evaluator-code-quality.md` — **긍정 하우스 스타일 (C-NNN) — PASS 판정의 기준이 된다**
|
|
86
|
-
4. `.harness/gotchas/evaluator-code-quality.md` 읽기 — **과거 실수 반복 금지**
|
|
87
|
-
5. `.harness/memory.md` 읽기 — **프로젝트 공유 학습 규칙 적용**
|
|
88
|
-
6. `actions/sprint-contract.md` — 이번 스프린트 변경 범위
|
|
89
|
-
7. `actions/feature-list.json` — 기능 정의
|
|
90
|
-
8. `actions/api-contract.json` — DTO 형태 (계약 vs 구현 일치 확인용)
|
|
91
|
-
9. `.harness/progress.json`
|
|
92
|
-
|
|
93
|
-
## Evaluation Steps
|
|
94
|
-
|
|
95
|
-
### Step 0: Diff Scope Extraction
|
|
96
|
-
|
|
97
|
-
이번 스프린트에서 **실제로 수정된 파일만** 검사한다:
|
|
98
|
-
|
|
99
|
-
```bash
|
|
100
|
-
git diff --name-only <sprint_base>..HEAD
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
- 수정 파일이 없으면 즉시 FAIL (스프린트 자체가 빈 상태).
|
|
104
|
-
- 수정 파일 수가 너무 많으면 (>50 변경) Planner 에스컬레이션 고려.
|
|
105
|
-
|
|
106
|
-
### Step 1: Static Toolchain Execution
|
|
107
|
-
|
|
108
|
-
결정론적 검사를 먼저 돌려 근본적 문제를 배제:
|
|
109
|
-
|
|
110
|
-
- `tsc --noEmit` (전체 or 영향 패키지)
|
|
111
|
-
- `eslint <변경 파일>` (biome 있으면 `biome check`)
|
|
112
|
-
- 프로젝트가 제공하는 lint/type check 스크립트 (`npm run lint:quality` 등)
|
|
113
|
-
|
|
114
|
-
**하나라도 error 레벨 실패 → 즉시 FAIL** (나머지 축 채점 전 조기 종료).
|
|
115
|
-
|
|
116
|
-
### Step 2: C1-C5 축별 코드 리딩
|
|
117
|
-
|
|
118
|
-
변경 파일을 각 축으로 읽어 evidence 수집. 상세 루브릭 → [scoring-rubric](references/scoring-rubric.md)
|
|
119
|
-
|
|
120
|
-
| # | 축 | 무엇을 보는가 | Weight |
|
|
121
|
-
|---|----|--------------|--------|
|
|
122
|
-
| C1 | Layer & Boundary | IA-MAP/MSA 경계 준수, 레이어 역방향 의존 없음, FE VM↔View 경계 | 25% |
|
|
123
|
-
| C2 | Readability & Complexity | 네이밍, 함수 길이/중첩, 매직 넘버, 주석 남용/부재, dead code | 15% |
|
|
124
|
-
| C3 | Reuse & DRY | 기존 util/hook/dto 활용, 중복 로직 없음, 조기 추상화 아님 | 20% |
|
|
125
|
-
| C4 | Type Safety & Error Handling | `any` 남용, null 처리, 예외 전파 경로, 경계 입력 검증 | 25% |
|
|
126
|
-
| C5 | Test Quality | 행동 기반 (not 구현 결합), mock 남용 없음, AC 매핑, 커버리지 의미 | 15% |
|
|
127
|
-
|
|
128
|
-
### Step 3: Cross-Reference With Contracts
|
|
129
|
-
|
|
130
|
-
- `api-contract.json` ↔ 실제 DTO/controller 시그니처 불일치 감지
|
|
131
|
-
- `feature-list.json` 의 feature 경계 ↔ 구현 파일 위치 IA-MAP 준수
|
|
132
|
-
|
|
133
|
-
### Step 4: Verdict
|
|
134
|
-
|
|
135
|
-
- 가중 점수 < 2.80 → FAIL
|
|
136
|
-
- 축 하나라도 Score 0 → FAIL (evidence 없는 Score 는 0 강제)
|
|
137
|
-
- Step 1 toolchain 실패 → FAIL
|
|
138
|
-
- Contract 불일치 1건 이상 → FAIL
|
|
139
|
-
|
|
140
|
-
### Step 5: Output
|
|
141
|
-
|
|
142
|
-
`actions/evaluation-code-quality.md` 작성:
|
|
143
|
-
|
|
144
|
-
- 축별 Score(0-3), 근거 evidence (파일:라인), 개선 제안
|
|
145
|
-
- Toolchain 실행 로그 요약
|
|
146
|
-
- 수정 파일 목록 + diff 통계
|
|
147
|
-
- 최종 Verdict + 재작업 대상 (retry_target)
|
|
148
|
-
|
|
149
|
-
Cross-Validation 데이터 블록 포함 (Functional/Visual 이 참조):
|
|
150
|
-
|
|
151
|
-
```json
|
|
152
|
-
{
|
|
153
|
-
"cross_validation_from_code_quality": {
|
|
154
|
-
"layer_violations": [...],
|
|
155
|
-
"type_holes": [...],
|
|
156
|
-
"contract_divergence": [...]
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
## Auto Gotcha Registration — v5.7.1+
|
|
162
|
-
|
|
163
|
-
**필수 emission**: `actions/evaluation-code-quality.md` 끝부분에 `gotcha_candidates` JSON 블록을 반드시 포함 (후보 없으면 `[]`). `harness-next.sh` 가 Evaluator 완료 직후 이 블록을 스캔해 자동 등록한다.
|
|
164
|
-
|
|
165
|
-
````
|
|
166
|
-
```gotcha_candidates
|
|
167
|
-
[
|
|
168
|
-
{
|
|
169
|
-
"target": "generator-backend",
|
|
170
|
-
"rule_id": "be-any-type-leak",
|
|
171
|
-
"title": "서비스 레이어 any 남용",
|
|
172
|
-
"wrong": "UserService.findAll() 반환 타입을 any[] 로 선언",
|
|
173
|
-
"right": "api-contract.json 의 DTO 타입을 재사용하거나 shared-dto 에 정의",
|
|
174
|
-
"why": "C4 Type Safety 축은 25% 가중. evidence 없는 any 는 Score 0.",
|
|
175
|
-
"scope": "모든 BE service/controller 레이어",
|
|
176
|
-
"source": "evaluator-code-quality:F-002"
|
|
177
|
-
}
|
|
178
|
-
]
|
|
179
|
-
```
|
|
180
|
-
````
|
|
181
|
-
|
|
182
|
-
등록 규칙:
|
|
183
|
-
- `target`: 실수를 반복할 대상 에이전트 (`generator-backend`, `generator-frontend`, `planner` 등).
|
|
184
|
-
- `rule_id`: dedup 키 (동일 rule_id 는 Occurrences +1, 본문 미변경).
|
|
185
|
-
- 신규 항목은 `Status: unverified`. Planner 리뷰 후 `verified` 승격.
|
|
186
|
-
- **FAIL 시**: 실패 근본 원인 1건 이상을 반드시 등록.
|
|
187
|
-
- **PASS 시**: 발견된 경미한 위반이 있으면 등록 (스코어 미반영이지만 반복 방지).
|
|
188
|
-
|
|
189
|
-
## Adversarial Rules
|
|
190
|
-
|
|
191
|
-
- "동작하니 PASS" 금지. 여기서는 구조를 본다.
|
|
192
|
-
- "이번 스프린트 외 코드라 건너뜀" 금지. 변경 파일 범위 안에서는 전수 검사.
|
|
193
|
-
- Evidence (파일:라인) 없는 Score = 0.
|
|
194
|
-
- "사소한 중복", "관용적 any" 같은 자기설득 금지.
|
|
195
|
-
- Generator가 이미 같은 패턴을 반복 제출 중이면 **반복 페널티** (같은 축에서 이전 스프린트 대비 악화 → Score 최대 1).
|
|
196
|
-
- 리팩토링 제안만 하고 Pass 주는 건 금지 — 제안이 필수 개선이면 FAIL.
|
|
197
|
-
|
|
198
|
-
## Forbidden
|
|
199
|
-
|
|
200
|
-
- 브라우저/서버 기동
|
|
201
|
-
- 코드 수정/커밋
|
|
202
|
-
- "Functional 에서 확인하세요" 식의 책임 전가 (여기서 코드로 확인 가능한 것은 여기서 한다)
|
|
203
|
-
- "시간 제약" 핑계 — 변경 범위는 유한하다
|
|
204
|
-
|
|
205
|
-
## After Evaluation
|
|
206
|
-
|
|
207
|
-
- **PASS** → Session Boundary Protocol On Complete (PASS) 실행
|
|
208
|
-
- **FAIL** → Session Boundary Protocol On Fail 실행
|
|
209
|
-
|
|
210
|
-
## ⚠ MANDATORY — 동적 Gotcha / Convention 등록
|
|
211
|
-
|
|
212
|
-
evaluation-code-quality.md 의 끝에 **반드시 `gotcha_candidates` 와 `convention_candidates` fenced JSON 블록**을 작성한다 (비어 있으면 `[]`). harness-next.sh / Team Lead 가 자동 스캔하여 `.harness/gotchas/` `.harness/conventions/` 에 dedup append.
|
|
213
|
-
|
|
214
|
-
**Code-quality 특화 검출 대상**:
|
|
215
|
-
- 정적 분석으로 잡을 수 있는데 generator 가 빠뜨린 패턴 → `gotcha_candidates`
|
|
216
|
-
- 코드 구조/명명/import 정렬 등 일관 룰 → `convention_candidates`
|
|
217
|
-
|
|
218
|
-
상세 스키마 / 예시 / 필수 필드 → [공통 가이드 — dynamic-registration](../_shared/dynamic-registration.md)
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
docmeta:
|
|
3
|
-
id: scoring-rubric
|
|
4
|
-
title: Code-Quality Scoring Rubric
|
|
5
|
-
type: output
|
|
6
|
-
createdAt: 2026-04-22T00:00:00Z
|
|
7
|
-
updatedAt: 2026-04-22T00:00:00Z
|
|
8
|
-
source:
|
|
9
|
-
producer: agent
|
|
10
|
-
skillId: harness-evaluator-code-quality
|
|
11
|
-
inputs:
|
|
12
|
-
- documentId: harness-evaluator-code-quality-skill
|
|
13
|
-
uri: ../SKILL.md
|
|
14
|
-
relation: output-from
|
|
15
|
-
sections:
|
|
16
|
-
- sourceRange:
|
|
17
|
-
startLine: 76
|
|
18
|
-
endLine: 84
|
|
19
|
-
targetRange:
|
|
20
|
-
startLine: 20
|
|
21
|
-
endLine: 85
|
|
22
|
-
tags:
|
|
23
|
-
- evaluator
|
|
24
|
-
- code-quality
|
|
25
|
-
- rubric
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
# Code-Quality Scoring Rubric (C1-C5)
|
|
29
|
-
|
|
30
|
-
Score 척도: 0 (Evidence 없음 / Critical 위반) · 1 (Major 위반) · 2 (Minor 위반) · 3 (위반 없음 + 긍정 evidence)
|
|
31
|
-
|
|
32
|
-
## C1. Layer & Boundary (25%)
|
|
33
|
-
|
|
34
|
-
**본다:**
|
|
35
|
-
- AGENTS.md IA-MAP 을 위반하는 import (예: FE에서 BE internal 참조)
|
|
36
|
-
- MSA 서비스 간 직접 DB 접근 (메시지 패턴이 원칙)
|
|
37
|
-
- Backend: controller → service → repo 단방향. 역방향/건너뜀 금지.
|
|
38
|
-
- Frontend: view 가 fetch/store 를 직접 조작하지 않고 VM/hook 경유
|
|
39
|
-
- libs/shared-dto 가 apps/ 를 역참조하지 않음
|
|
40
|
-
|
|
41
|
-
**0점 조건:** 레이어 역방향 의존 1건 이상, 또는 MSA 경계 위반.
|
|
42
|
-
|
|
43
|
-
## C2. Readability & Complexity (15%)
|
|
44
|
-
|
|
45
|
-
**본다:**
|
|
46
|
-
- 함수/메서드 50줄 초과, 중첩 4단 초과
|
|
47
|
-
- 매직 넘버/문자열 (상수화 없음)
|
|
48
|
-
- 네이밍: 역할을 말하지 않는 이름 (`data`, `tmp`, `handle`)
|
|
49
|
-
- 주석이 what을 설명 (코드로 말해야 함) / 왜를 빠뜨림
|
|
50
|
-
- dead code, 주석 처리된 블록
|
|
51
|
-
|
|
52
|
-
**0점 조건:** 300줄 이상 단일 함수, 또는 다수의 dead code 블록 방치.
|
|
53
|
-
|
|
54
|
-
## C3. Reuse & DRY (20%)
|
|
55
|
-
|
|
56
|
-
**본다:**
|
|
57
|
-
- 이미 존재하는 util/hook/service 를 무시하고 재구현
|
|
58
|
-
- 3회 이상 반복되는 동일 로직
|
|
59
|
-
- 조기 추상화 (단 1회 사용하는 generic factory 등) — 반대 방향 위반
|
|
60
|
-
- lib/shared-dto 확장 없이 로컬 DTO 중복 선언
|
|
61
|
-
|
|
62
|
-
**0점 조건:** 기존 util 무시하고 동일 로직 3건+ 재구현.
|
|
63
|
-
|
|
64
|
-
## C4. Type Safety & Error Handling (25%)
|
|
65
|
-
|
|
66
|
-
**본다:**
|
|
67
|
-
- `any`, `as any`, `@ts-ignore`, `@ts-expect-error` — 각 건 근거 필수
|
|
68
|
-
- nullable 무시, non-null 단언(`!`) 남용
|
|
69
|
-
- try/catch 가 오류를 삼킴 (`catch {}`, `catch(e) { console.log }`)
|
|
70
|
-
- 경계(API/외부 입력)에서 zod/class-validator 등 검증 부재
|
|
71
|
-
- 비동기 race / unhandled promise
|
|
72
|
-
|
|
73
|
-
**0점 조건:** unhandled promise 1건 이상, 또는 비타당한 `any` 3건 이상.
|
|
74
|
-
|
|
75
|
-
## C5. Test Quality (15%)
|
|
76
|
-
|
|
77
|
-
**본다:**
|
|
78
|
-
- 테스트가 구현 세부(내부 함수 호출 순서)에 결합
|
|
79
|
-
- mock 남용 — 실제 계약이 아닌 스텁 세계를 검증
|
|
80
|
-
- AC 와 테스트 케이스 매핑 부재
|
|
81
|
-
- 행복 경로만, 엣지/에러 케이스 없음
|
|
82
|
-
- 커버리지 숫자 채우기용 (`expect(x).toBeDefined()`)
|
|
83
|
-
|
|
84
|
-
**0점 조건:** 신규 기능에 테스트 0건, 또는 AC와 매핑되는 테스트 0건.
|
|
85
|
-
|
|
86
|
-
## Weighted Verdict
|
|
87
|
-
|
|
88
|
-
```
|
|
89
|
-
Weighted = C1*0.25 + C2*0.15 + C3*0.20 + C4*0.25 + C5*0.15
|
|
90
|
-
PASS : Weighted >= 2.80 AND 모든 축 Score > 0
|
|
91
|
-
FAIL : Weighted < 2.80 OR any axis = 0 OR toolchain error OR contract divergence
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
## Evidence 형식
|
|
95
|
-
|
|
96
|
-
모든 Score 주장은 아래 형식의 evidence 를 동반해야 한다:
|
|
97
|
-
|
|
98
|
-
```
|
|
99
|
-
[C4:1] apps/service-user/src/user.service.ts:42
|
|
100
|
-
- `result as any` 로 타입 우회. DTO 정의 존재(libs/shared-dto/user.dto.ts:15)에도
|
|
101
|
-
불구하고 강제 캐스팅. 타당한 사유 없음.
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
Evidence 없는 Score 는 **자동 0점 재계산**.
|