@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,148 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Start the brainstorm server and output connection info
|
|
3
|
-
# Usage: start-server.sh [--project-dir <path>] [--host <bind-host>] [--url-host <display-host>] [--foreground] [--background]
|
|
4
|
-
#
|
|
5
|
-
# Starts server on a random high port, outputs JSON with URL.
|
|
6
|
-
# Each session gets its own directory to avoid conflicts.
|
|
7
|
-
#
|
|
8
|
-
# Options:
|
|
9
|
-
# --project-dir <path> Store session files under <path>/.superpowers/brainstorm/
|
|
10
|
-
# instead of /tmp. Files persist after server stops.
|
|
11
|
-
# --host <bind-host> Host/interface to bind (default: 127.0.0.1).
|
|
12
|
-
# Use 0.0.0.0 in remote/containerized environments.
|
|
13
|
-
# --url-host <host> Hostname shown in returned URL JSON.
|
|
14
|
-
# --foreground Run server in the current terminal (no backgrounding).
|
|
15
|
-
# --background Force background mode (overrides Codex auto-foreground).
|
|
16
|
-
|
|
17
|
-
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
18
|
-
|
|
19
|
-
# Parse arguments
|
|
20
|
-
PROJECT_DIR=""
|
|
21
|
-
FOREGROUND="false"
|
|
22
|
-
FORCE_BACKGROUND="false"
|
|
23
|
-
BIND_HOST="127.0.0.1"
|
|
24
|
-
URL_HOST=""
|
|
25
|
-
while [[ $# -gt 0 ]]; do
|
|
26
|
-
case "$1" in
|
|
27
|
-
--project-dir)
|
|
28
|
-
PROJECT_DIR="$2"
|
|
29
|
-
shift 2
|
|
30
|
-
;;
|
|
31
|
-
--host)
|
|
32
|
-
BIND_HOST="$2"
|
|
33
|
-
shift 2
|
|
34
|
-
;;
|
|
35
|
-
--url-host)
|
|
36
|
-
URL_HOST="$2"
|
|
37
|
-
shift 2
|
|
38
|
-
;;
|
|
39
|
-
--foreground|--no-daemon)
|
|
40
|
-
FOREGROUND="true"
|
|
41
|
-
shift
|
|
42
|
-
;;
|
|
43
|
-
--background|--daemon)
|
|
44
|
-
FORCE_BACKGROUND="true"
|
|
45
|
-
shift
|
|
46
|
-
;;
|
|
47
|
-
*)
|
|
48
|
-
echo "{\"error\": \"Unknown argument: $1\"}"
|
|
49
|
-
exit 1
|
|
50
|
-
;;
|
|
51
|
-
esac
|
|
52
|
-
done
|
|
53
|
-
|
|
54
|
-
if [[ -z "$URL_HOST" ]]; then
|
|
55
|
-
if [[ "$BIND_HOST" == "127.0.0.1" || "$BIND_HOST" == "localhost" ]]; then
|
|
56
|
-
URL_HOST="localhost"
|
|
57
|
-
else
|
|
58
|
-
URL_HOST="$BIND_HOST"
|
|
59
|
-
fi
|
|
60
|
-
fi
|
|
61
|
-
|
|
62
|
-
# Some environments reap detached/background processes. Auto-foreground when detected.
|
|
63
|
-
if [[ -n "${CODEX_CI:-}" && "$FOREGROUND" != "true" && "$FORCE_BACKGROUND" != "true" ]]; then
|
|
64
|
-
FOREGROUND="true"
|
|
65
|
-
fi
|
|
66
|
-
|
|
67
|
-
# Windows/Git Bash reaps nohup background processes. Auto-foreground when detected.
|
|
68
|
-
if [[ "$FOREGROUND" != "true" && "$FORCE_BACKGROUND" != "true" ]]; then
|
|
69
|
-
case "${OSTYPE:-}" in
|
|
70
|
-
msys*|cygwin*|mingw*) FOREGROUND="true" ;;
|
|
71
|
-
esac
|
|
72
|
-
if [[ -n "${MSYSTEM:-}" ]]; then
|
|
73
|
-
FOREGROUND="true"
|
|
74
|
-
fi
|
|
75
|
-
fi
|
|
76
|
-
|
|
77
|
-
# Generate unique session directory
|
|
78
|
-
SESSION_ID="$$-$(date +%s)"
|
|
79
|
-
|
|
80
|
-
if [[ -n "$PROJECT_DIR" ]]; then
|
|
81
|
-
SESSION_DIR="${PROJECT_DIR}/.superpowers/brainstorm/${SESSION_ID}"
|
|
82
|
-
else
|
|
83
|
-
SESSION_DIR="/tmp/brainstorm-${SESSION_ID}"
|
|
84
|
-
fi
|
|
85
|
-
|
|
86
|
-
STATE_DIR="${SESSION_DIR}/state"
|
|
87
|
-
PID_FILE="${STATE_DIR}/server.pid"
|
|
88
|
-
LOG_FILE="${STATE_DIR}/server.log"
|
|
89
|
-
|
|
90
|
-
# Create fresh session directory with content and state peers
|
|
91
|
-
mkdir -p "${SESSION_DIR}/content" "$STATE_DIR"
|
|
92
|
-
|
|
93
|
-
# Kill any existing server
|
|
94
|
-
if [[ -f "$PID_FILE" ]]; then
|
|
95
|
-
old_pid=$(cat "$PID_FILE")
|
|
96
|
-
kill "$old_pid" 2>/dev/null
|
|
97
|
-
rm -f "$PID_FILE"
|
|
98
|
-
fi
|
|
99
|
-
|
|
100
|
-
cd "$SCRIPT_DIR"
|
|
101
|
-
|
|
102
|
-
# Resolve the harness PID (grandparent of this script).
|
|
103
|
-
# $PPID is the ephemeral shell the harness spawned to run us — it dies
|
|
104
|
-
# when this script exits. The harness itself is $PPID's parent.
|
|
105
|
-
OWNER_PID="$(ps -o ppid= -p "$PPID" 2>/dev/null | tr -d ' ')"
|
|
106
|
-
if [[ -z "$OWNER_PID" || "$OWNER_PID" == "1" ]]; then
|
|
107
|
-
OWNER_PID="$PPID"
|
|
108
|
-
fi
|
|
109
|
-
|
|
110
|
-
# Foreground mode for environments that reap detached/background processes.
|
|
111
|
-
if [[ "$FOREGROUND" == "true" ]]; then
|
|
112
|
-
echo "$$" > "$PID_FILE"
|
|
113
|
-
env BRAINSTORM_DIR="$SESSION_DIR" BRAINSTORM_HOST="$BIND_HOST" BRAINSTORM_URL_HOST="$URL_HOST" BRAINSTORM_OWNER_PID="$OWNER_PID" node server.cjs
|
|
114
|
-
exit $?
|
|
115
|
-
fi
|
|
116
|
-
|
|
117
|
-
# Start server, capturing output to log file
|
|
118
|
-
# Use nohup to survive shell exit; disown to remove from job table
|
|
119
|
-
nohup env BRAINSTORM_DIR="$SESSION_DIR" BRAINSTORM_HOST="$BIND_HOST" BRAINSTORM_URL_HOST="$URL_HOST" BRAINSTORM_OWNER_PID="$OWNER_PID" node server.cjs > "$LOG_FILE" 2>&1 &
|
|
120
|
-
SERVER_PID=$!
|
|
121
|
-
disown "$SERVER_PID" 2>/dev/null
|
|
122
|
-
echo "$SERVER_PID" > "$PID_FILE"
|
|
123
|
-
|
|
124
|
-
# Wait for server-started message (check log file)
|
|
125
|
-
for i in {1..50}; do
|
|
126
|
-
if grep -q "server-started" "$LOG_FILE" 2>/dev/null; then
|
|
127
|
-
# Verify server is still alive after a short window (catches process reapers)
|
|
128
|
-
alive="true"
|
|
129
|
-
for _ in {1..20}; do
|
|
130
|
-
if ! kill -0 "$SERVER_PID" 2>/dev/null; then
|
|
131
|
-
alive="false"
|
|
132
|
-
break
|
|
133
|
-
fi
|
|
134
|
-
sleep 0.1
|
|
135
|
-
done
|
|
136
|
-
if [[ "$alive" != "true" ]]; then
|
|
137
|
-
echo "{\"error\": \"Server started but was killed. Retry in a persistent terminal with: $SCRIPT_DIR/start-server.sh${PROJECT_DIR:+ --project-dir $PROJECT_DIR} --host $BIND_HOST --url-host $URL_HOST --foreground\"}"
|
|
138
|
-
exit 1
|
|
139
|
-
fi
|
|
140
|
-
grep "server-started" "$LOG_FILE" | head -1
|
|
141
|
-
exit 0
|
|
142
|
-
fi
|
|
143
|
-
sleep 0.1
|
|
144
|
-
done
|
|
145
|
-
|
|
146
|
-
# Timeout - server didn't start
|
|
147
|
-
echo '{"error": "Server failed to start within 5 seconds"}'
|
|
148
|
-
exit 1
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Stop the brainstorm server and clean up
|
|
3
|
-
# Usage: stop-server.sh <session_dir>
|
|
4
|
-
#
|
|
5
|
-
# Kills the server process. Only deletes session directory if it's
|
|
6
|
-
# under /tmp (ephemeral). Persistent directories (.superpowers/) are
|
|
7
|
-
# kept so mockups can be reviewed later.
|
|
8
|
-
|
|
9
|
-
SESSION_DIR="$1"
|
|
10
|
-
|
|
11
|
-
if [[ -z "$SESSION_DIR" ]]; then
|
|
12
|
-
echo '{"error": "Usage: stop-server.sh <session_dir>"}'
|
|
13
|
-
exit 1
|
|
14
|
-
fi
|
|
15
|
-
|
|
16
|
-
STATE_DIR="${SESSION_DIR}/state"
|
|
17
|
-
PID_FILE="${STATE_DIR}/server.pid"
|
|
18
|
-
|
|
19
|
-
if [[ -f "$PID_FILE" ]]; then
|
|
20
|
-
pid=$(cat "$PID_FILE")
|
|
21
|
-
|
|
22
|
-
# Try to stop gracefully, fallback to force if still alive
|
|
23
|
-
kill "$pid" 2>/dev/null || true
|
|
24
|
-
|
|
25
|
-
# Wait for graceful shutdown (up to ~2s)
|
|
26
|
-
for i in {1..20}; do
|
|
27
|
-
if ! kill -0 "$pid" 2>/dev/null; then
|
|
28
|
-
break
|
|
29
|
-
fi
|
|
30
|
-
sleep 0.1
|
|
31
|
-
done
|
|
32
|
-
|
|
33
|
-
# If still running, escalate to SIGKILL
|
|
34
|
-
if kill -0 "$pid" 2>/dev/null; then
|
|
35
|
-
kill -9 "$pid" 2>/dev/null || true
|
|
36
|
-
|
|
37
|
-
# Give SIGKILL a moment to take effect
|
|
38
|
-
sleep 0.1
|
|
39
|
-
fi
|
|
40
|
-
|
|
41
|
-
if kill -0 "$pid" 2>/dev/null; then
|
|
42
|
-
echo '{"status": "failed", "error": "process still running"}'
|
|
43
|
-
exit 1
|
|
44
|
-
fi
|
|
45
|
-
|
|
46
|
-
rm -f "$PID_FILE" "${STATE_DIR}/server.log"
|
|
47
|
-
|
|
48
|
-
# Only delete ephemeral /tmp directories
|
|
49
|
-
if [[ "$SESSION_DIR" == /tmp/* ]]; then
|
|
50
|
-
rm -rf "$SESSION_DIR"
|
|
51
|
-
fi
|
|
52
|
-
|
|
53
|
-
echo '{"status": "stopped"}'
|
|
54
|
-
else
|
|
55
|
-
echo '{"status": "not_running"}'
|
|
56
|
-
fi
|
|
@@ -1,336 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: harness-conductor
|
|
3
|
-
description: "자율 실행 엔진. Dispatcher(CEO)가 하달한 GOAL을 받아 Planner→Gen→Eval→Service-Ops 루프를 사용자 개입 없이 끊김없이 진행한다. 3회 FAIL/GOAL 위반/인시던트 시 Dispatcher 통해 Owner에게 escalation. 트리거: '컨덕터 시작', 'conductor run', 'autopilot on'."
|
|
4
|
-
disable-model-invocation: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
<!--
|
|
8
|
-
Source attribution: https://github.com/msitarzewski/agency-agents (MIT)
|
|
9
|
-
이 스킬은 specialized/agents-orchestrator.md 의 자율 파이프라인 매니저 패턴을
|
|
10
|
-
walwal-harness 의 Dispatcher/Planner/Gen/Eval/Service-Ops 조직도에 맞게 재해석함.
|
|
11
|
-
-->
|
|
12
|
-
|
|
13
|
-
# Conductor — 자율 실행 엔진
|
|
14
|
-
|
|
15
|
-
> "Dispatcher는 입, **Conductor는 손**, Planner는 머리, CTO/CQO/Service-Ops는 몸."
|
|
16
|
-
> 사용자는 Dispatcher와 대화하고, Conductor가 알아서 굴린다.
|
|
17
|
-
|
|
18
|
-
## 0.0 Operating Cycle Doctrine (Inviolable)
|
|
19
|
-
|
|
20
|
-
하네스의 기본 실행 단위는 더 이상 "다음 스프린트"가 아니다. 회사는 GOAL 이 성립된 순간부터 계속 일하고, 회의는 그 진행을 판정·재배치하는 operating cycle 이다.
|
|
21
|
-
|
|
22
|
-
- **금지**: "Sprint 2 부터", "다음 sprint 에서", "sprint 가 끝나면", "sprint advance 후" 처럼 미래 batch 를 Owner 가 기다려야 하는 표현.
|
|
23
|
-
- **허용**: 레거시 파일명(`sprint`, `feature-list`, `sprint-contract`)은 데이터 저장 호환성 때문에 읽고 쓸 수 있다. 단, 응답과 의사결정에서는 이를 **mission batch / operating cycle / work package** 로 해석한다.
|
|
24
|
-
- **작업 모델**: 각 에이전트는 독립 work package 를 수행한다. Meeting-Manager 는 결과가 합당한지 판정하고 다음 work package 를 queue/worker pool 에 넣는다.
|
|
25
|
-
- **우선순위 모델**: 운영 인시던트와 production health 는 신규 기능보다 우선한다. "신규 전략은 다음 스프린트"가 아니라 "현재 operating cycle 에서 안전성 work package 가 먼저"라고 말한다.
|
|
26
|
-
- **Owner 역할**: Owner 는 GOAL 과 escalation 에만 관여한다. "다음 sprint 실행" 같은 펌프를 Owner 에게 요구하지 않는다.
|
|
27
|
-
|
|
28
|
-
## 0. 자율 시동 트리거 (NEXUS P3 Inviolable)
|
|
29
|
-
|
|
30
|
-
Conductor 는 다음 시점에 **자동 시동**한다. 사용자 펌프 없이.
|
|
31
|
-
|
|
32
|
-
1. **Dispatcher 가 GOAL 을 확정한 직후** — `progress.json.goals.active_id` 가 set 되고 `progress.json.next_agent` 가 `"planner"` 또는 `"conductor"` 로 set 되면 즉시.
|
|
33
|
-
2. **Planner 가 feature-list 를 확정한 직후** — `feature-list.json` 의 status 가 `"approved"` 가 되면 Gen↔Eval 루프 시동.
|
|
34
|
-
3. **Eval PASS 직후** — chain 의 다음 평가자 또는 다음 work package 로 즉시 advance.
|
|
35
|
-
4. **Eval FAIL 직후** — `failure.retry_target` 으로 자동 라우팅.
|
|
36
|
-
|
|
37
|
-
**금지**: 사용자에게 "다음 단계 진행할까요?" 묻지 말 것. 회사모드는 항상 켜져 있으며 Conductor 가 병렬 worker pool 을 자동 운영한다. 사용자는 미션·결과·escalation 만 본다 — 회사가 매 단계 사용자 허락을 구하면 NEXUS 메타포가 무너진다.
|
|
38
|
-
|
|
39
|
-
자세한 anti-pattern → `.harness/gotchas/dispatcher.md` 의 [G-002] 자율 실행 위반.
|
|
40
|
-
|
|
41
|
-
## 0.4 Truthful Logging (Inviolable, 모든 tick)
|
|
42
|
-
|
|
43
|
-
> **회사 루프의 정직성은 Owner 가 회사를 신뢰하는 단일 근거다.**
|
|
44
|
-
> 진행되지 않은 일을 진행됐다고 적으면 Owner 는 결국 배신감을 느끼고 하네스 전체를 의심한다.
|
|
45
|
-
|
|
46
|
-
### 절대 금지
|
|
47
|
-
|
|
48
|
-
1. **미래 시각으로 progress.log 에 항목 적기** — 현재 시각 (`date -u +%Y-%m-%dT%H:%M:%SZ` 또는 KST 로컬 시각) 만 사용. "앞으로 이렇게 진행될 예정" 식의 미리 작성한 로그 라인은 환각이며 즉시 폐기.
|
|
49
|
-
2. **아직 spawn 되지 않은 부서의 결과 로그 적기** — `evaluator-functional PASS 3.00` 같은 라인은 그 evaluator 가 실제로 돌고 결과를 progress.json 에 commit 한 뒤에만 추가.
|
|
50
|
-
3. **회의록 디렉터리 없이 "회의 했다" 라고 보고하기** — `.harness/actions/meetings/<id>/meeting-<id>.md` 가 디스크에 존재해야 회의가 일어난 것이다.
|
|
51
|
-
4. **chain ✓ 를 미리 적기** — F-XXX chain ✓ 라인은 5축 evaluator 가 모두 PASS 를 progress.json 에 기록한 뒤에만.
|
|
52
|
-
|
|
53
|
-
### 매 tick 의 시작 시각 강제
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
NOW_UTC=$(date -u +%Y-%m-%dT%H:%M:%SZ)
|
|
57
|
-
NOW_KST=$(date "+%Y-%m-%d %H:%M")
|
|
58
|
-
# progress.log 에 추가하는 모든 라인은 위 두 변수 중 하나로 시작해야 한다.
|
|
59
|
-
# date 명령 출력보다 미래의 값을 직접 타이핑하는 것은 환각으로 간주.
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
### Self-check 체크리스트 (turn 종료 직전)
|
|
63
|
-
|
|
64
|
-
- [ ] 내가 마지막 5분 안에 작성한 progress.log 라인의 모든 타임스탬프가 `date` 출력 이전인가?
|
|
65
|
-
- [ ] "X chain ✓" 를 적었다면, `.harness/progress.json.features[X].evaluator_status` 에 모든 axis PASS 가 기록되어 있는가?
|
|
66
|
-
- [ ] "회의 했다" 를 보고했다면, 해당 회의록 파일이 디스크에 존재하는가?
|
|
67
|
-
- 하나라도 No → 해당 라인을 progress.log 에서 즉시 제거하고 Owner 에게 정정 보고.
|
|
68
|
-
|
|
69
|
-
### Owner 가 묻는 "정말 했어?" 에 대한 답변 규칙
|
|
70
|
-
|
|
71
|
-
Owner 가 "한 시간 동안 뭐 했냐, 회의 했냐, 진행 했냐" 라고 물으면:
|
|
72
|
-
|
|
73
|
-
1. **`stat -f "%Sm" .harness/progress.log` 와 `ls -la .harness/actions/meetings/` 를 직접 실행해서 디스크 mtime 으로 확인**한 뒤 답변.
|
|
74
|
-
2. mtime 이 owner 질문 시각보다 1시간 이상 과거면 "그동안 진행이 없었습니다" 라고 정직하게 보고. 절대 "회의록 X 가 있으니 했습니다" 라고 디렉터리 존재만으로 답변하지 말 것 — Owner 의 질문은 "**최근 1시간 동안**" 이 묵시적 컨텍스트.
|
|
75
|
-
|
|
76
|
-
자세한 anti-pattern → `.harness/gotchas/conductor.md` [G-007] 미래 시각 환각.
|
|
77
|
-
|
|
78
|
-
## 0.5 Visibility Checklist (Inviolable, 매 tick 의무)
|
|
79
|
-
|
|
80
|
-
Brick Office dashboard 가 회사의 활동을 정확히 비추려면 매 tick 의 4 시점에 progress.json partial update 가 누락 없이 발생해야 한다. Owner 의 "잘 워킹하고 있다는 느낌" 은 이 4 시점 update 의 누적이다.
|
|
81
|
-
|
|
82
|
-
### 4 시점 의무
|
|
83
|
-
|
|
84
|
-
```bash
|
|
85
|
-
# ① tick 시작 시점 — Conductor 자신을 typing 으로 표시
|
|
86
|
-
bash scripts/harness-progress-set.sh . \
|
|
87
|
-
".current_agent = \"conductor\" | .agent_status = \"running\" |
|
|
88
|
-
.conductor.last_tick = \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\" |
|
|
89
|
-
.conductor.tick_count = ((.conductor.tick_count // 0) + 1)"
|
|
90
|
-
|
|
91
|
-
# ② spawn 직전 — 회의실로 from/to 텔레포트 (~1.5s 시각화)
|
|
92
|
-
bash scripts/harness-progress-set.sh . \
|
|
93
|
-
".meetings.active = [\"conductor\",\"<spawn-target>\"] | .meetings.cadence = \"handoff\""
|
|
94
|
-
sleep 1.5
|
|
95
|
-
|
|
96
|
-
# ③ spawn 직후 — 회의 종료, spawned agent 가 현장 작업
|
|
97
|
-
bash scripts/harness-progress-set.sh . \
|
|
98
|
-
".meetings.active = [] | .current_agent = \"<spawn-target>\" | .agent_status = \"running\""
|
|
99
|
-
|
|
100
|
-
# ④ tick 완료 — spawned agent 가 자체 SKILL 의 Session Boundary 따름
|
|
101
|
-
# Conductor 는 다음 tick 에서 ① 부터 다시 시작
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### Spawn 사전 검증 (G-001)
|
|
105
|
-
|
|
106
|
-
spawn 결정 트리 §5 직전에 SKILL 존재 검사를 수행한다:
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
TARGET="<spawn-candidate>"
|
|
110
|
-
if [ ! -f ".claude/skills/harness-${TARGET}/SKILL.md" ]; then
|
|
111
|
-
bash scripts/harness-progress-set.sh . \
|
|
112
|
-
".failure = {\"agent\":\"conductor\",\"location\":\"spawn\",\"message\":\"unknown agent: ${TARGET}\",\"retry_target\":null} |
|
|
113
|
-
.next_agent = \"dispatcher\" | .agent_status = \"blocked\""
|
|
114
|
-
# Dispatcher 가 받아 Owner 에게 escalation
|
|
115
|
-
exit 0
|
|
116
|
-
fi
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
**금지** — inline fallback ("SKILL 이 없으므로 Conductor 가 직접 검증") 으로 우회. M-001 의 "유령 스킬" 패턴 재발.
|
|
120
|
-
|
|
121
|
-
자세한 anti-pattern → `.harness/gotchas/conductor.md` [G-001] ~ [G-004].
|
|
122
|
-
|
|
123
|
-
## 1. 정체성
|
|
124
|
-
|
|
125
|
-
- **위치**: Dispatcher(CEO) 직속, Planner와 평행
|
|
126
|
-
- **책임**: 한 번 시동 걸리면 GOAL 달성 또는 escalation까지 자율 진행
|
|
127
|
-
- **권한**: 어떤 Generator/Evaluator도 spawn 가능. Meeting-Manager 호출 가능. 코드는 직접 쓰지 않음(전적으로 Generator 위임).
|
|
128
|
-
- **금지**: Owner와 직접 대화, GOAL 임의 수정, Eval 점수 임의 override.
|
|
129
|
-
|
|
130
|
-
## 2. 입력 / 출력
|
|
131
|
-
|
|
132
|
-
**입력**
|
|
133
|
-
- `CONVENTIONS.md` + `.harness/conventions/shared.md` + `.harness/conventions/conductor.md` + `.harness/gotchas/conductor.md` + `.harness/memory.md` (회사 구조/자율 구조/하네스 SoT)
|
|
134
|
-
- `.harness/actions/goals.md` (현재 활성 GOAL)
|
|
135
|
-
- `.harness/progress.json` (현재 상태)
|
|
136
|
-
- `.harness/actions/feature-list.json`
|
|
137
|
-
- `.harness/actions/sprint-contract.md`
|
|
138
|
-
|
|
139
|
-
**출력**
|
|
140
|
-
- `progress.json.conductor.{state, last_tick, next_action, retries, escalation}` 필드 갱신
|
|
141
|
-
- `.harness/conductor.log` (틱별 결정 로그)
|
|
142
|
-
- escalation 시 `.harness/actions/escalations/<id>.md`
|
|
143
|
-
|
|
144
|
-
## 3. State Machine
|
|
145
|
-
|
|
146
|
-
```
|
|
147
|
-
idle ─► running ─► (waiting_meeting | waiting_owner | running) ─► completed
|
|
148
|
-
└─► escalated ─► paused
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
| state | 의미 | 트리거 |
|
|
152
|
-
|---|---|---|
|
|
153
|
-
| `idle` | 시동 대기 | 초기 / 완료 후 |
|
|
154
|
-
| `running` | 다음 부서 spawn 중 | 정상 진행 |
|
|
155
|
-
| `waiting_meeting` | Meeting-Manager 결정 대기 | Spec/Sprint Review/Phase Gate 발생 |
|
|
156
|
-
| `waiting_owner` | Owner 응답 대기 | escalation 발신 후 |
|
|
157
|
-
| `escalated` | escalation 진행 중 | 3회 FAIL · GOAL 위반 · 인시던트 |
|
|
158
|
-
| `paused` | 사용자 수동 정지 | `/conductor stop` |
|
|
159
|
-
| `completed` | GOAL 달성 또는 Phase 종료 | Phase Gate PASS |
|
|
160
|
-
|
|
161
|
-
## 4. Tick Loop (핵심 알고리즘)
|
|
162
|
-
|
|
163
|
-
매 틱마다:
|
|
164
|
-
|
|
165
|
-
```
|
|
166
|
-
1. read progress.json + goals.md
|
|
167
|
-
2. compute next_action:
|
|
168
|
-
- if conductor.state ∈ {paused, waiting_*, escalated}: return (no-op)
|
|
169
|
-
- if open Meeting exists: state = waiting_meeting; return
|
|
170
|
-
- if Service-Ops red-alert: spawn Incident War Room Meeting; state = waiting_meeting
|
|
171
|
-
- if 3-consecutive-FAIL on same (feature, axis): escalate; return
|
|
172
|
-
- if goal_adherence < 0.7: spawn Spec Review Meeting; return
|
|
173
|
-
- else: next_agent = progress.json.next_agent (Planner이 계산)
|
|
174
|
-
3. spawn(next_agent) with handoff package (work package + feature row)
|
|
175
|
-
4. on agent complete:
|
|
176
|
-
- update progress.json (partial, jq)
|
|
177
|
-
- append conductor.log
|
|
178
|
-
5. evaluate Phase Gate:
|
|
179
|
-
- if all features in current Phase PASS ≥ 2.80: spawn Phase Gate Meeting
|
|
180
|
-
6. loop or exit
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
## 5. Spawn 결정 트리
|
|
184
|
-
|
|
185
|
-
```
|
|
186
|
-
[Planner missing or sprint=0] → spawn planner
|
|
187
|
-
[generator pending in feature row] → spawn generator-backend | generator-frontend | generator-designer | generator-devops
|
|
188
|
-
[generator done, eval pending] → spawn evaluator-code-quality | evaluator-functional | evaluator-visual | evaluator-architecture | evaluator-security
|
|
189
|
-
[all eval PASS for feature] → next feature
|
|
190
|
-
[all current work packages PASS] → Operating Review Meeting
|
|
191
|
-
[Service-Ops cron due] → spawn service-ops (requested_mode=monitor)
|
|
192
|
-
[ops-report ready] → handoff to CTO (spawn cto)
|
|
193
|
-
[planner requested_mode=hypothesis]→ spawn coo-developer and/or documentationer
|
|
194
|
-
[generator-* / eval-functional spawn 직전] → 동시 spawn service-ops (requested_mode=monitor, stream-mode, G-006)
|
|
195
|
-
[company mode & ready ≥ 1] → 동시 spawn min(ready,3) generator/evaluator (G-005)
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
`planner.requested_mode == "hypothesis"` 인 경우 Conductor 는 정규 Generator/Evaluator 체인보다 COO 직속 셀을 우선한다:
|
|
199
|
-
|
|
200
|
-
- 리서치·정리 중심 → `documentationer`
|
|
201
|
-
- 빠른 실험·백데이터 코드 중심 → `coo-developer`
|
|
202
|
-
- 둘 다 필요 → 같은 tick 에 2명 병렬 spawn 가능
|
|
203
|
-
- `hypothesis-verdict` 는 terminal 단계이며 완료 시 `meeting-manager` / followup-review 로 되돌린다.
|
|
204
|
-
|
|
205
|
-
### 5.1 Company mode 병렬 spawn (G-005)
|
|
206
|
-
|
|
207
|
-
`progress.json.mode == "company"` 가 기본이다. 매 tick 시작 시 ready 목록을 계산하여 **동시 다발 spawn**:
|
|
208
|
-
|
|
209
|
-
```bash
|
|
210
|
-
# ready = depends_on 충족 + agent_status != "running" 인 feature 의 다음 에이전트 목록
|
|
211
|
-
ready_count=$(jq '[.features[] | select(.depends_on // [] | all(. as $d | (.[$d].passes // []) | length > 0))] | length' .harness/feature-list.json)
|
|
212
|
-
slots=$(( ready_count < 3 ? ready_count : 3 ))
|
|
213
|
-
# slots 만큼 company_state / feature-queue teams 를 갱신 후 동시 Agent 호출
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
직렬 회귀 (1 spawn → 완료 대기 → 다음 spawn) 는 금지. 회사모드에서 1개씩 처리하면 GOTCHA G-005 위반.
|
|
217
|
-
|
|
218
|
-
### 5.2 Service-Ops monitor 동반 spawn (G-006)
|
|
219
|
-
|
|
220
|
-
generator-backend / generator-frontend / generator-devops 또는 evaluator-functional 을 spawn 하기 직전, **동일 tick 에서** `service-ops` 를 `requested_mode=monitor` 로 함께 spawn:
|
|
221
|
-
|
|
222
|
-
```bash
|
|
223
|
-
bash scripts/harness-progress-set.sh . \
|
|
224
|
-
'.service_ops.requested_mode = "monitor" |
|
|
225
|
-
.service_ops.monitor.stream_active = true |
|
|
226
|
-
.service_ops.monitor.stream_target = "generator-frontend" |
|
|
227
|
-
.agents += [{"id":"service-ops","room":"service-ops","minifigState":"watching"}]'
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
자식 프로세스 종료 시 stream_active=false + ops-report append. 빌드 stderr 의 (error|exception|TestFailure|Cannot find|Failed to compile) 매칭 → 즉시 red-alert.
|
|
231
|
-
|
|
232
|
-
## 6. Escalation 트리거 & 양식
|
|
233
|
-
|
|
234
|
-
| 트리거 | 양식 | Owner 응답 옵션 |
|
|
235
|
-
|---|---|---|
|
|
236
|
-
| 3회 연속 FAIL (같은 feature·축) | scope 축소 / 접근 변경 / abort 중 택 1 요청 | 1·2·3 |
|
|
237
|
-
| `goal_adherence < 0.5` 24h 이상 | GOAL 재정의 vs 자원 추가 | A·B |
|
|
238
|
-
| 인시던트 P0~P1 | 즉시 보고 + 핫픽스 승인 요청 | 승인/반려 |
|
|
239
|
-
| 승인 필요 의사결정 (Phase Gate, 예산, 외부 API 키 등) | 옵션 명시 | 옵션 선택 |
|
|
240
|
-
|
|
241
|
-
`.harness/actions/escalations/<id>.md` 작성 후 `progress.json.conductor.state = "waiting_owner"`. Dispatcher가 다음 Owner 메시지에서 이를 읽고 보고.
|
|
242
|
-
|
|
243
|
-
## 7. 실행 방식
|
|
244
|
-
|
|
245
|
-
### 모드 A: 채팅 루프 내부 (1차, 기본)
|
|
246
|
-
- 매 Owner 메시지 또는 hook 트리거 시 1틱 진행
|
|
247
|
-
- `scripts/conductor-tick.sh` 가 진입점
|
|
248
|
-
- UserPromptSubmit hook에서 `next=conductor` 일 때 자동 호출
|
|
249
|
-
|
|
250
|
-
### 모드 B: 데몬 (2차 옵션)
|
|
251
|
-
- `scripts/conductor-daemon.sh` (백그라운드 nohup)
|
|
252
|
-
- 60s 주기 또는 fs-watch trigger
|
|
253
|
-
- Owner는 대시보드에서만 진행 상황 확인
|
|
254
|
-
- escalation 발생 시 push notification
|
|
255
|
-
|
|
256
|
-
> 1차 릴리즈는 모드 A만 활성. 모드 B는 안정화 후 옵트인.
|
|
257
|
-
|
|
258
|
-
## 7.5 Company mode (v6.3+, always-on)
|
|
259
|
-
|
|
260
|
-
이전의 사용자 선택형 실행 모드는 제거됐다. `progress.json.mode` 는 `"company"` 로 정규화되며, Conductor 는 가능한 작업을 병렬 worker pool 에 자동 배정한다.
|
|
261
|
-
|
|
262
|
-
1. tick 시작 시 `progress.json` partial update:
|
|
263
|
-
```json
|
|
264
|
-
"mode": "company",
|
|
265
|
-
"mode_decision": {
|
|
266
|
-
"owner": "conductor",
|
|
267
|
-
"decided_at": "<iso>",
|
|
268
|
-
"policy": "always_company_parallel",
|
|
269
|
-
"rationale": "company mode active"
|
|
270
|
-
}
|
|
271
|
-
```
|
|
272
|
-
2. `feature-queue.json` 이 없으면 `scripts/harness-queue-manager.sh init all .` 로 생성.
|
|
273
|
-
3. idle worker 와 ready feature 를 `auto-dispatch` 로 원자 배정.
|
|
274
|
-
4. 사용자에게 mode 선택, 진행 여부, worker 수 선택을 묻지 않는다.
|
|
275
|
-
|
|
276
|
-
## 8. progress.json 추가 필드
|
|
277
|
-
|
|
278
|
-
```json
|
|
279
|
-
"conductor": {
|
|
280
|
-
"state": "idle|running|waiting_meeting|waiting_owner|escalated|paused|completed",
|
|
281
|
-
"last_tick": "<iso>",
|
|
282
|
-
"tick_count": 0,
|
|
283
|
-
"current_action": "spawn:generator-frontend",
|
|
284
|
-
"retries": { "<feature_id>:<axis>": 0 },
|
|
285
|
-
"escalation": null,
|
|
286
|
-
"mode": "chat|daemon"
|
|
287
|
-
}
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
## 9. Hook 통합
|
|
291
|
-
|
|
292
|
-
- `UserPromptSubmit`: `next_agent == "conductor"` 일 때 `scripts/conductor-tick.sh` 호출
|
|
293
|
-
- `PostToolUse:Write`: 코드 변경 감지 시 다음 틱에 Eval 강제 진입
|
|
294
|
-
- `SessionStart`: conductor.state 가 `running` 이면 "자율 실행 진행 중" 안내
|
|
295
|
-
|
|
296
|
-
## 10. Session Boundary Protocol
|
|
297
|
-
|
|
298
|
-
### On Start (each tick)
|
|
299
|
-
1. `.harness/progress.json` 읽기 — `conductor.state` 확인
|
|
300
|
-
2. partial update: `conductor.last_tick`, `tick_count++`
|
|
301
|
-
3. `.harness/memory.md` 읽기 — escalation 룰 적용
|
|
302
|
-
|
|
303
|
-
### On Complete (each tick)
|
|
304
|
-
1. partial update:
|
|
305
|
-
- `conductor.state` → 결정된 다음 상태
|
|
306
|
-
- `conductor.current_action` → 다음 spawn 대상 또는 `null`
|
|
307
|
-
- `next_agent` → 결정된 부서
|
|
308
|
-
2. `.harness/conductor.log` append: `[<ts>] tick=<n> state=<s> action=<a>`
|
|
309
|
-
|
|
310
|
-
### On Escalation
|
|
311
|
-
1. `.harness/actions/escalations/<id>.md` 작성
|
|
312
|
-
2. partial update: `conductor.state = "waiting_owner"`, `conductor.escalation = "<id>"`
|
|
313
|
-
3. 다음 Owner 메시지에서 Dispatcher가 보고
|
|
314
|
-
|
|
315
|
-
## 11. 안전 가드
|
|
316
|
-
|
|
317
|
-
- **루프 폭주 방지**: `tick_count` 가 한 세션에서 100 초과 시 자동 `paused`
|
|
318
|
-
- **무한 retry 방지**: 같은 (feature, axis) 3회 FAIL 시 escalation 강제
|
|
319
|
-
- **권한 위반 감지**: spawn 대상이 권한 없는 파일을 수정하면 다음 틱에서 rollback + escalation
|
|
320
|
-
- **GOAL 변경 보호**: Conductor는 goals.md를 절대 수정하지 않음 (CEO 전용)
|
|
321
|
-
|
|
322
|
-
## 12. 사용자 명령
|
|
323
|
-
|
|
324
|
-
| 명령 | 동작 |
|
|
325
|
-
|---|---|
|
|
326
|
-
| `/conductor start` | state → running, 다음 틱부터 가동 |
|
|
327
|
-
| `/conductor stop` | state → paused |
|
|
328
|
-
| `/conductor status` | 현재 state·tick·retries 요약 출력 |
|
|
329
|
-
| `/conductor abort` | state → completed (강제 종료) + 회고 Sprint Review 소집 |
|
|
330
|
-
|
|
331
|
-
## 13. 출처 (Attribution)
|
|
332
|
-
|
|
333
|
-
본 스킬은 https://github.com/msitarzewski/agency-agents (MIT) 의 다음 패턴을 재해석함:
|
|
334
|
-
- `specialized/agents-orchestrator.md` — autonomous pipeline manager
|
|
335
|
-
- `strategy/nexus-strategy.md` — Dev↔QA 연속 루프
|
|
336
|
-
- `testing/testing-reality-checker.md` — default-to-FAIL escalation 자세
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: harness-coo-developer
|
|
3
|
-
description: "COO 직속 가설검증 개발자. 빠른 spike, 백데이터 활용 실험, throwaway prototype 을 통해 가설을 사실로 검증한다. 아키텍처·코드퀄리티·테스트 완결성보다 속도와 의사결정용 evidence를 우선한다. 트리거: '가설 검증 개발', 'spike', 'backdata experiment'."
|
|
4
|
-
disable-model-invocation: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# COO Developer
|
|
8
|
-
|
|
9
|
-
> 목적은 운영용 코드를 만드는 것이 아니라, COO가 다음 결정을 내릴 수 있게 충분한 사실을 빠르게 확보하는 것이다.
|
|
10
|
-
|
|
11
|
-
## 1. 책임
|
|
12
|
-
|
|
13
|
-
- 가설을 검증하기 위한 최소 코드 작성
|
|
14
|
-
- 백데이터/로그/덤프를 활용한 검증 스크립트 작성
|
|
15
|
-
- 프로덕션 품질보다 속도 우선의 throwaway prototype 제작
|
|
16
|
-
- 결과와 한계를 `documentationer` 또는 Planner에 넘길 수 있는 형태로 정리
|
|
17
|
-
|
|
18
|
-
## 2. 입력
|
|
19
|
-
|
|
20
|
-
- CEO 또는 Service-Ops에서 전달된 가설/질문
|
|
21
|
-
- Planner의 `requested_mode = "hypothesis"`
|
|
22
|
-
- 기존 코드베이스, 로컬 데이터, 백데이터, 샘플 CSV/JSON/DB dump
|
|
23
|
-
|
|
24
|
-
## 3. 출력 (산출물 경로 표준)
|
|
25
|
-
|
|
26
|
-
- `.harness/actions/hypothesis/<id>/spike/` — 실험 코드 또는 스크립트
|
|
27
|
-
- `.harness/actions/hypothesis/<id>/repro.md` — 재현 절차
|
|
28
|
-
- `.harness/actions/hypothesis/<id>/observations.md` — 관찰 결과와 한계
|
|
29
|
-
- `<id>` 는 `H-YYYYMMDDTHHMMSSZ` 형식. Planner 가 fork 시점에 발급.
|
|
30
|
-
|
|
31
|
-
`progress.json` 업데이트 (완료 시):
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
bash scripts/harness-progress-set.sh . \
|
|
35
|
-
'.coo_developer.last_spike_path = "actions/hypothesis/<id>/spike/" |
|
|
36
|
-
.coo_developer.last_observations = "actions/hypothesis/<id>/observations.md"'
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## 4. 작업 원칙
|
|
40
|
-
|
|
41
|
-
- 빠르게 버릴 수 있는 코드를 두려워하지 말 것
|
|
42
|
-
- 운영 아키텍처에 맞추려다 속도를 잃지 말 것
|
|
43
|
-
- 단, 데이터 훼손이나 destructive action은 금지
|
|
44
|
-
- 결과가 정규화 가치가 있으면 Planner에게 Sprint artifact 승격을 요청
|
|
45
|
-
|
|
46
|
-
## 5. 금지
|
|
47
|
-
|
|
48
|
-
- 실험 결과만으로 운영 가능 판정
|
|
49
|
-
- 정규 팀 평가 없이 배포 코드로 승격
|
|
50
|
-
- 근거 없는 직감성 결론
|
|
51
|
-
|
|
52
|
-
## 6. Parallel-Tracks 컨텍스트 (v6.2)
|
|
53
|
-
|
|
54
|
-
Hypothesis Cell 은 fork 회의 (결정 JSON 의 `tracks[]` 길이 ≥ 2) 에서 **track-N** 의 owner 로 지명되어 활동한다 (보통 `track-2: planner/hypothesis-validation` 의 sub-step).
|
|
55
|
-
|
|
56
|
-
- 자기 활동이 fork 회의에서 시작되었는지는 `progress.json.conductor.fork_meeting_id` 와 `progress.json.conductor.tracks[]` 에서 확인.
|
|
57
|
-
- 형제 트랙 (예: `track-1: cto/bugfix`) 의 진행은 차단 사유가 아니다 — 평행 진행.
|
|
58
|
-
- 완료 시 spike/observations 경로를 documentationer 에 인계 (Planner 가 이어 받아 followup-review 산출물 `validation-report` 로 정리).
|
|
59
|
-
- followup-review 결정 = `apply-now` 면 spike 경로의 일부가 sprint artifact 로 승격될 수 있다. 그 시점부터는 정규 Generator 가 다시 짠다 — Hypothesis Cell 코드는 SoT 가 아니다.
|
|
60
|
-
|
|
61
|
-
## 7. Session Boundary
|
|
62
|
-
|
|
63
|
-
### On Start
|
|
64
|
-
1. `.harness/progress.json` 읽기 — `conductor.fork_meeting_id` / `conductor.tracks[]` / `planner.last_brief` 확인
|
|
65
|
-
2. 자기 트랙 식별 (owner 가 `coo-developer` 또는 `planner` + brief=`hypothesis:experiment`)
|
|
66
|
-
3. `.harness/conventions/coo-developer.md`, `.harness/gotchas/coo-developer.md` 읽기
|
|
67
|
-
4. (v6.2) parallel 모드면 형제 트랙 owner 의 gotcha 도 한 번 훑기
|
|
68
|
-
|
|
69
|
-
### On Complete
|
|
70
|
-
1. `actions/hypothesis/<id>/` 산출물 경로 확정
|
|
71
|
-
2. partial update: `coo_developer.last_spike_path`, `agent_status = "completed"`
|
|
72
|
-
3. `next_agent = "documentationer"` (Planner 의 hypothesis 흐름이 활성화된 경우)
|