@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,52 +0,0 @@
|
|
|
1
|
-
# Component Patterns
|
|
2
|
-
|
|
3
|
-
## 프로젝트 구조
|
|
4
|
-
|
|
5
|
-
```
|
|
6
|
-
apps/web/src/
|
|
7
|
-
├── api/
|
|
8
|
-
│ ├── client.ts # fetch 인스턴스 (base: localhost:3000)
|
|
9
|
-
│ ├── types.ts # api-contract.json → TypeScript 1:1
|
|
10
|
-
│ └── [domain].ts # 도메인별 API 함수
|
|
11
|
-
├── components/
|
|
12
|
-
│ ├── ui/ # Button, Input, Modal, Card
|
|
13
|
-
│ └── [domain]/ # 도메인별 컴포넌트
|
|
14
|
-
├── pages/ (또는 app/)
|
|
15
|
-
├── hooks/
|
|
16
|
-
│ └── use[Domain].ts
|
|
17
|
-
├── stores/ # Zustand (클라이언트 상태만)
|
|
18
|
-
└── styles/
|
|
19
|
-
└── globals.css # Tailwind directives
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## API 타입 변환
|
|
23
|
-
|
|
24
|
-
```typescript
|
|
25
|
-
// api-contract.json의 response_200을 그대로 반영
|
|
26
|
-
interface ItemResponse {
|
|
27
|
-
id: number;
|
|
28
|
-
name: string;
|
|
29
|
-
created_at: string;
|
|
30
|
-
}
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## 상태관리
|
|
34
|
-
|
|
35
|
-
- 서버 상태: TanStack Query (캐시, 리페치, 낙관적 업데이트)
|
|
36
|
-
- 클라이언트 상태: Zustand (최소한, 서버 상태와 중복 금지)
|
|
37
|
-
|
|
38
|
-
## 3가지 상태 필수 처리
|
|
39
|
-
|
|
40
|
-
```tsx
|
|
41
|
-
if (isLoading) return <Skeleton />;
|
|
42
|
-
if (error) return <ErrorMessage error={error} />;
|
|
43
|
-
if (data.length === 0) return <EmptyState />;
|
|
44
|
-
return <ItemList items={data} />;
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## 접근성
|
|
48
|
-
|
|
49
|
-
- `<button>`, `<nav>`, `<main>`, `<form>` 시맨틱 태그
|
|
50
|
-
- `aria-label` 필요 시 추가
|
|
51
|
-
- Tab 순서 논리적, Enter/Escape 동작
|
|
52
|
-
- 색상 대비 4.5:1 이상
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
# Design System Rules
|
|
2
|
-
|
|
3
|
-
> 출처: taste-skill (Leonxlnx), supanova-design-skill (uxjoseph)
|
|
4
|
-
> React/Next.js 앱 컨텍스트에 맞게 적응
|
|
5
|
-
|
|
6
|
-
## 디자인 변수 (Baseline)
|
|
7
|
-
|
|
8
|
-
```
|
|
9
|
-
DESIGN_VARIANCE: 8 (1=대칭, 10=비대칭)
|
|
10
|
-
MOTION_INTENSITY: 6 (1=정적, 10=시네마틱)
|
|
11
|
-
VISUAL_DENSITY: 4 (1=갤러리, 10=콕핏)
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
사용자 요청에 따라 동적 조정. Planner의 plan.md에 명시된 톤에 맞춤.
|
|
15
|
-
|
|
16
|
-
## 1. Typography
|
|
17
|
-
|
|
18
|
-
### 한국어
|
|
19
|
-
- **Primary**: Pretendard (CDN 또는 next/font)
|
|
20
|
-
- Headlines: `text-4xl md:text-5xl lg:text-6xl tracking-tight leading-tight font-bold`
|
|
21
|
-
- Body: `text-base md:text-lg text-gray-600 leading-relaxed max-w-[65ch]`
|
|
22
|
-
- **`break-keep-all`** 필수 (한국어 단어 중간 줄바꿈 방지)
|
|
23
|
-
- **`leading-tight` ~ `leading-snug`** (한국어는 Latin보다 수직 여백 필요)
|
|
24
|
-
|
|
25
|
-
### 영문 Display
|
|
26
|
-
- `Geist`, `Outfit`, `Cabinet Grotesk`, `Satoshi` 중 택 1
|
|
27
|
-
- Headlines: `tracking-tighter leading-none`
|
|
28
|
-
- Dashboard/Software UI: Serif 폰트 **금지** → Sans-Serif만 (`Geist` + `Geist Mono`)
|
|
29
|
-
|
|
30
|
-
### 금지 폰트
|
|
31
|
-
Inter, Noto Sans KR, Roboto, Arial, Open Sans, Helvetica, Malgun Gothic
|
|
32
|
-
|
|
33
|
-
## 2. Color
|
|
34
|
-
|
|
35
|
-
- **Accent 1개만.** Saturation < 80%
|
|
36
|
-
- **THE LILA BAN**: AI 보라색/파란색 그라디언트 **금지**
|
|
37
|
-
- Neutral base: Zinc/Slate 계열
|
|
38
|
-
- Accent: Emerald, Electric Blue, Warm Amber, Deep Rose 중 택 1
|
|
39
|
-
- 페이지 전체 warm/cool gray **혼용 금지**
|
|
40
|
-
- **NO Pure Black**: `#000000` 금지 → `#0a0a0a`, Zinc-950, Slate-950
|
|
41
|
-
|
|
42
|
-
### 다크모드
|
|
43
|
-
- 랜딩페이지: 다크 기본 권장 (`bg-zinc-950`)
|
|
44
|
-
- 앱/대시보드: 라이트 기본, 다크 옵션 (`dark:` prefix)
|
|
45
|
-
|
|
46
|
-
## 3. Layout
|
|
47
|
-
|
|
48
|
-
- **ANTI-CENTER BIAS**: DESIGN_VARIANCE > 4 일 때 센터 정렬 Hero **금지**
|
|
49
|
-
- Split Screen (50/50), 좌측 정렬/우측 에셋, 비대칭 여백 사용
|
|
50
|
-
- **NO 3-Column Equal Cards**: Bento Grid, Zig-Zag, 비대칭 그리드 사용
|
|
51
|
-
- **Grid over Flex-Math**: `grid grid-cols-1 md:grid-cols-3 gap-6` (flexbox calc 금지)
|
|
52
|
-
- **컨테이너**: `max-w-7xl mx-auto px-4 sm:px-6 lg:px-8`
|
|
53
|
-
- **섹션 간격**: `py-24 md:py-32 lg:py-40` (디자인이 숨쉬도록)
|
|
54
|
-
- **모바일 오버라이드**: `< 768px`에서 `w-full px-4 py-8` 단일 컬럼 강제
|
|
55
|
-
|
|
56
|
-
### Bento Grid 패턴
|
|
57
|
-
```
|
|
58
|
-
grid grid-cols-12
|
|
59
|
-
- col-span-8 row-span-2 (큰 카드)
|
|
60
|
-
- col-span-4 (작은 카드 2개 스택)
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
## 4. Components
|
|
64
|
-
|
|
65
|
-
### Card Architecture (Double-Bezel)
|
|
66
|
-
```
|
|
67
|
-
Outer: bg-white/5 ring-1 ring-white/10 p-1.5 rounded-[2rem]
|
|
68
|
-
Inner: bg-distinct shadow-[inset_0_1px_1px_rgba(255,255,255,0.15)] rounded-[calc(2rem-0.375rem)]
|
|
69
|
-
```
|
|
70
|
-
- Card는 elevation이 hierarchy를 전달할 때만 사용
|
|
71
|
-
- VISUAL_DENSITY > 7: card 대신 `border-t`, `divide-y`, negative space
|
|
72
|
-
|
|
73
|
-
### CTA Button
|
|
74
|
-
```
|
|
75
|
-
rounded-full px-8 py-4 text-lg
|
|
76
|
-
hover:scale-[1.02] active:scale-[0.98]
|
|
77
|
-
transition: all 0.5s cubic-bezier(0.16, 1, 0.3, 1)
|
|
78
|
-
```
|
|
79
|
-
- 화살표 아이콘: 원형 래퍼 안에 배치 (`w-8 h-8 rounded-full bg-black/5`)
|
|
80
|
-
- 모바일 최소 48px 높이
|
|
81
|
-
|
|
82
|
-
### Eyebrow Tag
|
|
83
|
-
```
|
|
84
|
-
rounded-full px-3 py-1 text-[11px] uppercase tracking-[0.15em] font-medium bg-accent/10 text-accent
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
## 5. Motion
|
|
88
|
-
|
|
89
|
-
### 전역 트랜지션 기본값
|
|
90
|
-
```css
|
|
91
|
-
transition: all 0.5s cubic-bezier(0.16, 1, 0.3, 1);
|
|
92
|
-
```
|
|
93
|
-
`linear`, `ease-in-out` **금지**. 모든 인터랙티브 요소에 이 curve 적용.
|
|
94
|
-
|
|
95
|
-
### 스크롤 진입
|
|
96
|
-
```css
|
|
97
|
-
@keyframes fadeInUp {
|
|
98
|
-
from { opacity: 0; transform: translateY(2rem); filter: blur(4px); }
|
|
99
|
-
to { opacity: 1; transform: translateY(0); filter: blur(0); }
|
|
100
|
-
}
|
|
101
|
-
```
|
|
102
|
-
- `IntersectionObserver`로 트리거 (`window.addEventListener('scroll')` 금지)
|
|
103
|
-
- 형제 요소 stagger: `animation-delay: calc(var(--index) * 80ms)`
|
|
104
|
-
|
|
105
|
-
### Framer Motion (MOTION_INTENSITY > 5)
|
|
106
|
-
- Spring physics: `type: "spring", stiffness: 100, damping: 20`
|
|
107
|
-
- `layout` / `layoutId`로 레이아웃 전환
|
|
108
|
-
- `useMotionValue` + `useTransform` (연속 애니메이션에 useState 금지)
|
|
109
|
-
- Perpetual motion은 `React.memo`로 격리된 Client Component에서만
|
|
110
|
-
- `<AnimatePresence>` 필수
|
|
111
|
-
|
|
112
|
-
### 성능
|
|
113
|
-
- **GPU만**: `transform`, `opacity`만 애니메이션. `top/left/width/height` 금지
|
|
114
|
-
- **Blur 제한**: `backdrop-blur`는 fixed/sticky 요소에만
|
|
115
|
-
- **Z-index**: sticky nav(`z-40`), overlay(`z-50`)에만. 임의 z-50 남발 금지
|
|
116
|
-
- **Grain/Noise**: `position: fixed; pointer-events: none; z-[60]`에서만
|
|
117
|
-
|
|
118
|
-
## 6. Viewport & Responsiveness
|
|
119
|
-
|
|
120
|
-
- **`min-h-[100dvh]`** 사용 (`h-screen` **금지** — iOS Safari 깨짐)
|
|
121
|
-
- Breakpoints: `sm:640` `md:768` `lg:1024` `xl:1280`
|
|
122
|
-
- 모바일 터치 타겟: 최소 44px
|
|
123
|
-
- 텍스트 가독성: 모바일 최소 14px
|
|
124
|
-
|
|
125
|
-
## 7. 한국어 콘텐츠 기준
|
|
126
|
-
|
|
127
|
-
- **자연스러운 한국어**: 번역체 금지
|
|
128
|
-
- 존댓말 일관성: 합니다/하세요 통일
|
|
129
|
-
- CTA: "무료로 시작하기", "3분만에 만들어보기", "지금 바로 체험하기"
|
|
130
|
-
- **금지 표현**: "혁신적인", "획기적인", "차세대", "원활한", "게임 체인저"
|
|
131
|
-
- 이름: 하윤서, 박도현, 이서진, 김하늘 (김철수/John Doe 금지)
|
|
132
|
-
- 숫자: `47,200+`, `4.87/5.0` (50,000+, 5.0 같은 깨끗한 숫자 금지)
|
|
133
|
-
|
|
134
|
-
## 8. Icons
|
|
135
|
-
|
|
136
|
-
- **Phosphor Icons** (`@phosphor-icons/react`) 또는 **Radix Icons** (`@radix-ui/react-icons`)
|
|
137
|
-
- strokeWidth 전역 통일 (1.5 또는 2.0 중 택 1)
|
|
138
|
-
- **이모지 금지**: 코드, 마크업, 텍스트 어디에서든
|
|
139
|
-
- FontAwesome, Material Icons 금지 (두꺼운 선)
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
# Vercel / Next.js Best Practices
|
|
2
|
-
|
|
3
|
-
> 출처: Vercel Engineering, Next.js App Router 공식 문서
|
|
4
|
-
|
|
5
|
-
## Framework 기본값
|
|
6
|
-
|
|
7
|
-
- **Next.js App Router** + **Server Components** 기본
|
|
8
|
-
- `'use client'`는 인터랙션이 필요한 곳에만 추가
|
|
9
|
-
- `proxy.ts` (Next.js 16+) 또는 `middleware.ts`로 인터셉션, 인증 게이트, 리다이렉트
|
|
10
|
-
- Cache Components, `next/image`, `next/font` 우선 사용
|
|
11
|
-
|
|
12
|
-
## RSC (React Server Components) 규칙
|
|
13
|
-
|
|
14
|
-
- **RSC 안전**: 전역 상태는 Client Components에서만 동작
|
|
15
|
-
- Next.js에서 Provider는 별도 `'use client'` 컴포넌트로 래핑
|
|
16
|
-
- **인터랙티비티 격리**: 모션/인터랙션이 있는 UI는 독립 leaf 컴포넌트로 추출 + `'use client'`
|
|
17
|
-
- Server Components는 정적 레이아웃만 렌더링
|
|
18
|
-
|
|
19
|
-
## 렌더링 전략
|
|
20
|
-
|
|
21
|
-
- **SSG (Static)**: 변하지 않는 페이지
|
|
22
|
-
- **ISR (Incremental)**: 주기적 갱신이 필요한 페이지
|
|
23
|
-
- **SSR (Dynamic)**: 요청마다 달라지는 페이지
|
|
24
|
-
- **PPR (Partial Prerendering)**: 정적 쉘 + 동적 홀 조합
|
|
25
|
-
|
|
26
|
-
## 성능 최적화
|
|
27
|
-
|
|
28
|
-
- `next/image`: 자동 최적화, `loading="lazy"`, `sizes` 속성 필수
|
|
29
|
-
- `next/font`: 빌드 타임 폰트 최적화, 레이아웃 시프트 방지
|
|
30
|
-
- **번들 사이즈**: `'use client'` 경계에서 트리쉐이킹 확인
|
|
31
|
-
- **Core Web Vitals**: LCP < 2.5s, FID < 100ms, CLS < 0.1 목표
|
|
32
|
-
|
|
33
|
-
## 상태관리 전략
|
|
34
|
-
|
|
35
|
-
- **서버 상태**: TanStack Query (캐시, 리페치, 낙관적 업데이트)
|
|
36
|
-
- **클라이언트 상태**: Zustand (최소한, 서버 상태와 중복 금지)
|
|
37
|
-
- `useState`/`useReducer`: 격리된 UI 로직에만
|
|
38
|
-
- 전역 상태: deep prop-drilling 회피 목적으로만
|
|
39
|
-
|
|
40
|
-
## 의존성 검증 [필수]
|
|
41
|
-
|
|
42
|
-
3rd party 라이브러리 import 전 반드시 `package.json` 확인.
|
|
43
|
-
없으면 설치 명령 먼저 출력. **존재를 가정하지 않는다.**
|
|
44
|
-
|
|
45
|
-
## Tailwind CSS 버전 관리
|
|
46
|
-
|
|
47
|
-
- `package.json`에서 v3/v4 확인 후 해당 문법 사용
|
|
48
|
-
- v4: `postcss.config.js`에 `tailwindcss` 플러그인 사용 금지 → `@tailwindcss/postcss` 또는 Vite 플러그인
|
|
49
|
-
- v3 프로젝트에 v4 문법 혼용 금지
|
|
50
|
-
|
|
51
|
-
## shadcn/ui 사용 시
|
|
52
|
-
|
|
53
|
-
- 기본 상태 그대로 사용 **금지**
|
|
54
|
-
- radius, colors, shadows를 프로젝트 디자인 시스템에 맞게 커스터마이즈 필수
|
|
@@ -1,419 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: harness-meeting-manager
|
|
3
|
-
description: "부서 간 동기화 엔진. Cron(Service-Ops)·Event(부서 발신)·Manual 트리거로 6종 회의(Standup/Sprint Review/Spec Review/Incident War Room/All-Hands/Followup Review)를 소집·집계·디스패치. parallel tracks fork-join 지원. 적응형 cadence(light 30m / normal 1h / heavy 4h). 트리거: '미팅 소집', 'meeting convene', 'standup', 'followup'."
|
|
4
|
-
disable-model-invocation: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
<!--
|
|
8
|
-
Source attribution: https://github.com/msitarzewski/agency-agents (MIT)
|
|
9
|
-
이 스킬은 strategy/coordination/handoff-templates.md 의 Standup/Sprint/Phase-Gate
|
|
10
|
-
양식과 strategy/runbooks/scenario-incident-response.md 의 War Room 패턴을
|
|
11
|
-
walwal-harness 의 부서 구조에 맞게 재해석함.
|
|
12
|
-
-->
|
|
13
|
-
|
|
14
|
-
# Meeting-Manager — 회의 소집·집계·디스패치
|
|
15
|
-
|
|
16
|
-
> Conductor가 "일을 굴리는 손"이라면, Meeting-Manager는 "일이 옆길로 새지 않게 잡는 서기".
|
|
17
|
-
> Dispatcher(CEO) 직속, Conductor와 평행.
|
|
18
|
-
|
|
19
|
-
## 0. Operating Cycle Doctrine (Inviolable)
|
|
20
|
-
|
|
21
|
-
Meeting-Manager 는 회사를 sprint gate 로 멈추게 하지 않는다. 회의는 "다음 sprint 시작 승인"이 아니라 **현재 work package 결과 판정 + 다음 work package 자동 배정**이다.
|
|
22
|
-
|
|
23
|
-
- **회의록 금지 표현**: "다음 sprint 에서 처리", "Sprint 2+ 부터", "Owner 가 다음 sprint 실행".
|
|
24
|
-
- **회의록 표준 표현**: "backlog/queue 에 work package 등록", "Conductor 가 worker pool 에 자동 배정", "다음 cadence 에 followup-review".
|
|
25
|
-
- **회의 결정**은 항상 `decision.owner`, `action_type`, `tracks[]`, `action_items[]` 중 하나로 실행 가능해야 한다. 단순한 "다음 sprint 계획"은 미완료 회의록으로 간주한다.
|
|
26
|
-
- **정기 보고**는 `sprint-review` 대신 가능하면 `standup`, `followup-review`, `all-hands`, `incident-war-room` 의미로 작성한다. 레거시 enum 때문에 `sprint-review` 값을 읽더라도 Owner-facing 제목은 "Operating Review" 로 바꾼다.
|
|
27
|
-
|
|
28
|
-
## 1. 정체성
|
|
29
|
-
|
|
30
|
-
- **위치**: Dispatcher 직속, Conductor 평행
|
|
31
|
-
- **책임**: 회의 스케줄·소집·진행·기록·Action Item 디스패치
|
|
32
|
-
- **권한**: 모든 부서에 prep 양식 발신, 회의록 작성·집계, queue enqueue (v5.9.6 재사용)
|
|
33
|
-
- **금지**: 의사결정 직접 수행 (사회만 봄), Owner와 직접 대화 (escalation은 Dispatcher 경유)
|
|
34
|
-
- **세션 시작 SoT**: `CONVENTIONS.md`, `.harness/conventions/shared.md`, `.harness/conventions/meeting-manager.md`, `.harness/gotchas/meeting-manager.md`, `.harness/memory.md` 를 먼저 읽고 회의 운영에 적용한다.
|
|
35
|
-
|
|
36
|
-
## 1.5 Executive Role Contract (Inviolable)
|
|
37
|
-
|
|
38
|
-
회의는 상태 리포트가 아니다. 회의록에는 반드시 각 임원이 자기 역할 관점에서 **입장(Position) · 근거(Evidence) · 다음 행동(Action)** 을 남겨야 한다.
|
|
39
|
-
|
|
40
|
-
| Role | Identity | Must Decide | Must Not |
|
|
41
|
-
|---|---|---|---|
|
|
42
|
-
| Dispatcher/CEO | Owner와의 유일한 외부 창구, GOAL/사업 우선순위 책임자 | GOAL 흔들림 여부, Owner escalation 필요성 | 내부 해결 가능한 일을 Owner 대기로 끝내기 |
|
|
43
|
-
| Planner/COO | GOAL을 work package/queue/가설로 바꾸는 운영 총괄 | planning_drift/goal_drift 여부, 다음 work package | "다음 sprint/Owner 결정 후" 같은 대기형 결론 |
|
|
44
|
-
| CTO | 구현/아키텍처/runtime recovery 책임자 | implementation_drift, 복구/핫픽스/worker 배정 | 서버 down을 Service-Ops 알림으로만 방치 |
|
|
45
|
-
| CQO | 품질/회귀/검증 기준 책임자 | evidence 충분성, PASS/FAIL, 추가 검증 | evidence 없는 낙관론 승인 |
|
|
46
|
-
| Service-Ops | 운영 신호/KPI/incident/cadence 책임자 | ops_drift, incident-war-room 필요성, monitor cadence | 경고만 남기고 CTO/CQO action으로 연결하지 않기 |
|
|
47
|
-
|
|
48
|
-
회의록이 아래 중 하나라도 빠뜨리면 "회의 완료"가 아니다.
|
|
49
|
-
|
|
50
|
-
- `## Required Role Positions` 또는 `## Role Briefs` 에 CEO/COO/CTO/CQO/Service-Ops 전원의 발언이 있다.
|
|
51
|
-
- `## Discussion` 에 역할 간 쟁점이 있다.
|
|
52
|
-
- `## Decision JSON` 에 `decision.owner`, `action_type`, `rationale`, `evidence`, `drift_classification`, `source_path` 가 있다.
|
|
53
|
-
- `## Action Items` 가 있고 Owner 대기 없이 다음 내부 owner로 이어진다.
|
|
54
|
-
|
|
55
|
-
Owner-facing hourly 보고는 Service-Ops health table 이 아니라 **Executive Meeting Minutes 요약**이어야 한다. 서버 운용현황은 회의 evidence 중 하나일 뿐이다.
|
|
56
|
-
|
|
57
|
-
## 2. 회의 6종 (v6.2 — Followup Review 추가)
|
|
58
|
-
|
|
59
|
-
| 종류 | 트리거 | 참석자 | 결과물 | Owner 푸시? |
|
|
60
|
-
|---|---|---|---|---|
|
|
61
|
-
| **Standup** | Cron (적응형) | CTO·CQO·Service-Ops | GOAL 적합도·블로커·다음 24h 계획 | ❌ (대시보드만) |
|
|
62
|
-
| **Sprint Review** | Sprint 종료 이벤트 | CEO·COO·CTO·CQO | PASS/FAIL 통합·다음 Sprint 결정 | ✅ 요약본 |
|
|
63
|
-
| **Spec Review** | Eval "Change Request" 발신 | COO·CTO·발신 Eval | feature-list 수정·api-contract 변경 | 변경 시 ✅ |
|
|
64
|
-
| **Incident War Room** | Service-Ops red-alert | CEO·CTO·Incident-Responder·관련 Gen | 핫픽스·롤백·RCA 초안 | ✅ 즉시 |
|
|
65
|
-
| **All-Hands (Phase Gate)** | Phase 0~6 전환 이벤트 | 전 부서 + CEO·COO | Phase 진입 승인·부서 편성 변경 | ✅ 요약본 |
|
|
66
|
-
| **Followup Review** *(v6.2)* | parallel tracks 의 모든 deliverable 도착 또는 `rendezvous.when` 도달 | fork meeting 의 트랙 owner 들 + 결정자(CTO 또는 CEO) | 트랙 산출물 통합 결정 (즉시 적용 / 백로그 / 추가 검증) | 변경 시 ✅ |
|
|
67
|
-
|
|
68
|
-
## 3. 회의 라이프사이클 (5단계)
|
|
69
|
-
|
|
70
|
-
```
|
|
71
|
-
Notice → Prep → Convene → Decide → Minutes
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
| 단계 | 책임 | 산출물 |
|
|
75
|
-
|---|---|---|
|
|
76
|
-
| Notice | Meeting-Manager | `.harness/actions/meetings/<id>/notice.md` (의제·참석자·deadline) |
|
|
77
|
-
| Prep | 각 참석자 | `.harness/actions/meetings/<id>/prep-<role>.md` |
|
|
78
|
-
| Convene | Meeting-Manager | prep 통합 → `meeting-<id>.md` 초안 |
|
|
79
|
-
| Decide | rubric → CEO override | `decisions:` 섹션 작성 |
|
|
80
|
-
| Minutes | Meeting-Manager | Action Items를 queue enqueue + archive |
|
|
81
|
-
|
|
82
|
-
## 4. 적응형 Cadence (Standup)
|
|
83
|
-
|
|
84
|
-
| 모드 | 주기 | 진입 조건 |
|
|
85
|
-
|---|---|---|
|
|
86
|
-
| `light` | 30m | 활성 Sprint AND Service-Ops 이벤트율 < 1/h AND goal_adherence ≥ 0.9 |
|
|
87
|
-
| `normal` | 1h | 기본값 / 다른 모드 미충족 |
|
|
88
|
-
| `heavy` | 4h | (idle OR 배포 후 안정기) AND 직전 3회 standup 무특이사항 |
|
|
89
|
-
|
|
90
|
-
전환 결정자: Service-Ops가 매 Standup 종료 시 직전 3회 메트릭으로 재계산 → `progress.json.meetings.cadence` 갱신.
|
|
91
|
-
수동 override: Owner가 `/meeting-cadence light|normal|heavy` (Conductor가 1회 적용 후 자동 조정 재개).
|
|
92
|
-
|
|
93
|
-
## 5. 의사결정 규칙
|
|
94
|
-
|
|
95
|
-
```
|
|
96
|
-
1. rubric 기반 합의 시도
|
|
97
|
-
- 각 참석자 의견 + 가중치 (담당 영역 가중)
|
|
98
|
-
- 가중 동의율 ≥ 0.66 → 가결
|
|
99
|
-
2. 가결 못 함 → CEO override 요청
|
|
100
|
-
- Dispatcher 통해 Owner에게 옵션 제시
|
|
101
|
-
- Owner 응답 = 최종
|
|
102
|
-
3. 인시던트는 시간 압박 → CEO 즉시 override 가능
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
## 6. Artifact 스키마
|
|
106
|
-
|
|
107
|
-
`.harness/actions/meetings/<meeting-id>.md`:
|
|
108
|
-
|
|
109
|
-
```yaml
|
|
110
|
-
---
|
|
111
|
-
docmeta: { id, type: output, ... }
|
|
112
|
-
meeting:
|
|
113
|
-
id: M-2026-05-07-0001
|
|
114
|
-
type: standup | sprint-review | spec-review | incident | all-hands
|
|
115
|
-
trigger: cron | event:<source> | manual
|
|
116
|
-
scheduled_at: <iso>
|
|
117
|
-
convened_at: <iso>
|
|
118
|
-
attendees: [cto, cqo, service-ops]
|
|
119
|
-
status: notice | prep | convened | decided | dispatched | archived
|
|
120
|
-
prep_links:
|
|
121
|
-
- role: cto
|
|
122
|
-
uri: meetings/M-.../prep-cto.md
|
|
123
|
-
agenda:
|
|
124
|
-
- <item>
|
|
125
|
-
reports:
|
|
126
|
-
- role: <role>
|
|
127
|
-
summary: <one-line>
|
|
128
|
-
decisions:
|
|
129
|
-
- id: D-1
|
|
130
|
-
text: <decision>
|
|
131
|
-
vote: { agree: 0.71, override: false }
|
|
132
|
-
decision:
|
|
133
|
-
owner: planner | cto | cqo | service-ops | dispatcher
|
|
134
|
-
action_type: goal-alignment | replan | implement | re-evaluate | monitor | escalate-owner | hypothesis-validation | bugfix
|
|
135
|
-
rationale: <fact-based why this owner must act next>
|
|
136
|
-
evidence:
|
|
137
|
-
- source: <artifact path>
|
|
138
|
-
kind: ops-report | cqo-audit | cto-review | meeting-prep | track-deliverable
|
|
139
|
-
drift_classification: implementation_drift | planning_drift | ops_drift | goal_drift
|
|
140
|
-
# v6.2 — Parallel tracks (fork-join). tracks.length >= 2 이면 fork, 없거나 1이면 single.
|
|
141
|
-
# 별도의 mode 플래그는 두지 않음 — 단일 진실은 tracks 자체.
|
|
142
|
-
tracks:
|
|
143
|
-
- id: track-1
|
|
144
|
-
owner: cto
|
|
145
|
-
action_type: bugfix
|
|
146
|
-
deliverable: hotfix-result | validation-report | spike-result | report
|
|
147
|
-
deliverable_path: <artifact path or null>
|
|
148
|
-
status: pending | running | completed | abandoned
|
|
149
|
-
rendezvous: # tracks.length >= 2 일 때만 의미 있음
|
|
150
|
-
type: followup-review | sprint-review
|
|
151
|
-
when: next_cadence | <iso>
|
|
152
|
-
# Followup Review 전용 필드
|
|
153
|
-
fork_meeting_id: <원본 fork 회의 id, 있으면>
|
|
154
|
-
prior_tracks: [<완료된 tracks[] 스냅샷>]
|
|
155
|
-
action_items:
|
|
156
|
-
- id: AI-1
|
|
157
|
-
owner: generator-backend
|
|
158
|
-
description: <task>
|
|
159
|
-
due: <iso>
|
|
160
|
-
queue_entry_id: <queue-id>
|
|
161
|
-
goal_adherence_delta: -0.05
|
|
162
|
-
escalation_to_owner: false
|
|
163
|
-
---
|
|
164
|
-
|
|
165
|
-
# Meeting <id> — <type> @ <ts>
|
|
166
|
-
|
|
167
|
-
## 1. Agenda
|
|
168
|
-
## 2. Reports (per role)
|
|
169
|
-
## 3. Decisions
|
|
170
|
-
## 4. Action Items
|
|
171
|
-
## 5. Next Meeting
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
## 7. progress.json 추가
|
|
175
|
-
|
|
176
|
-
```json
|
|
177
|
-
"meetings": {
|
|
178
|
-
"cadence": "light|normal|heavy",
|
|
179
|
-
"last_standup": "<iso>",
|
|
180
|
-
"next_scheduled": "<iso>",
|
|
181
|
-
"active": [ { "id": "...", "type": "...", "status": "..." } ],
|
|
182
|
-
"open_action_items": 0,
|
|
183
|
-
"last_goal_adherence": 0.92,
|
|
184
|
-
"decision": {
|
|
185
|
-
"owner": "planner",
|
|
186
|
-
"action_type": "goal-alignment",
|
|
187
|
-
"rationale": "...",
|
|
188
|
-
"evidence": [],
|
|
189
|
-
"drift_classification": "planning_drift",
|
|
190
|
-
"tracks": [],
|
|
191
|
-
"rendezvous": null,
|
|
192
|
-
"source_path": ".harness/actions/meetings/M-.../meeting-M-....md"
|
|
193
|
-
},
|
|
194
|
-
"requested_tracks": [],
|
|
195
|
-
"requested_rendezvous": null,
|
|
196
|
-
"fork_meeting_id": null,
|
|
197
|
-
"manual_override": null
|
|
198
|
-
}
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
> tracks.length ≥ 2 면 fork-join, 그 외(0 또는 1)는 single. 별도 mode 플래그는 없음.
|
|
202
|
-
|
|
203
|
-
`progress.json.conductor` 에는 활성 fork 의 트랙 상태가 거울처럼 미러링 된다:
|
|
204
|
-
|
|
205
|
-
```json
|
|
206
|
-
"conductor": {
|
|
207
|
-
"tracks": [
|
|
208
|
-
{ "id": "track-1", "owner": "cto", "action_type": "bugfix",
|
|
209
|
-
"deliverable": "hotfix-result", "deliverable_path": null,
|
|
210
|
-
"status": "running", "started_at": "<iso>" }
|
|
211
|
-
],
|
|
212
|
-
"rendezvous": { "type": "followup-review", "when": "next_cadence" },
|
|
213
|
-
"fork_meeting_id": "M-..."
|
|
214
|
-
}
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
## 7.05 Parallel Tracks (v6.2 — Fork-Join)
|
|
218
|
-
|
|
219
|
-
회의 결론이 한 개의 owner 로 모이지 않고 둘 이상의 부서가 **독립 산출물**을 만든 뒤 **다음 회의에서 합치는** 패턴을 지원한다.
|
|
220
|
-
|
|
221
|
-
### 7.05.1 언제 parallel 을 선택하는가
|
|
222
|
-
|
|
223
|
-
다음을 **모두** 충족할 때만 parallel 로 결정한다.
|
|
224
|
-
|
|
225
|
-
1. 결론이 둘 이상의 deliverable 로 자연 분해된다 (예: "버그 핫픽스" + "가설 보고서").
|
|
226
|
-
2. 두 deliverable 사이에 직접 의존이 없다 (한쪽이 다른 쪽 결과를 기다리지 않는다).
|
|
227
|
-
3. 결정자(CTO 또는 CEO) 가 두 결과를 **함께 보고** 다음 단계를 정해야 한다.
|
|
228
|
-
|
|
229
|
-
위 셋 중 하나라도 어긋나면 single 로 가고, 후속 작업은 별도 회의에서 다룬다.
|
|
230
|
-
|
|
231
|
-
### 7.05.2 Fork 회의 결정 작성법
|
|
232
|
-
|
|
233
|
-
회의록 `## Decision JSON` 블록에 다음을 작성한다:
|
|
234
|
-
|
|
235
|
-
```json
|
|
236
|
-
{
|
|
237
|
-
"decision": {
|
|
238
|
-
"owner": "cto",
|
|
239
|
-
"action_type": "bugfix",
|
|
240
|
-
"rationale": "운영 버그 + 신규 가설 두 트랙 동시 진행 — 다음 followup-review 에서 통합 결정",
|
|
241
|
-
"evidence": [...],
|
|
242
|
-
"drift_classification": "implementation_drift",
|
|
243
|
-
"tracks": [
|
|
244
|
-
{ "id": "track-1", "owner": "cto", "action_type": "bugfix", "deliverable": "hotfix-result" },
|
|
245
|
-
{ "id": "track-2", "owner": "planner", "action_type": "hypothesis-validation", "deliverable": "validation-report" }
|
|
246
|
-
],
|
|
247
|
-
"rendezvous": { "type": "followup-review", "when": "next_cadence" }
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
> `tracks` 가 2개 이상 → 자동으로 fork-join. 1개 이하 → single (rendezvous 무시). 별도 mode 플래그 없음.
|
|
253
|
-
|
|
254
|
-
규칙:
|
|
255
|
-
- `tracks[0].owner` 와 `tracks[0].action_type` 는 backward-compat 으로 `decision.owner` / `decision.action_type` 와 동일해야 한다 (Conductor 의 1차 dispatch 대상).
|
|
256
|
-
- `id` 는 `track-1`, `track-2` 형식으로 1-based 순번. 두 개를 권장. 셋 이상은 fork 가 너무 무거워지므로 회의를 분리해라.
|
|
257
|
-
- `deliverable` 은 짧은 슬러그(`hotfix-result`, `validation-report`, `spike-result`, `report`).
|
|
258
|
-
- `rendezvous.when` 은 `next_cadence` (다음 정기 회의에 합류) 또는 ISO 시각 (특정 시점에 강제 소집).
|
|
259
|
-
|
|
260
|
-
### 7.05.3 Conductor 가 하는 일 (참고)
|
|
261
|
-
|
|
262
|
-
`scripts/conductor-tick.sh` 가 자동으로:
|
|
263
|
-
1. fork 회의 직후 `progress.json.conductor.tracks` 에 트랙 상태 미러링.
|
|
264
|
-
2. 모든 트랙 owner 를 같은 tick 에 running 으로 만들고 병렬 spawn 대상으로 노출한다. 첫 번째 트랙만 spawn 하고 나머지를 pending 으로 남기는 구현은 parallel fork 가 아니라 sequence 이므로 금지.
|
|
265
|
-
3. 모든 트랙이 completed 되면 `meetings.requested_type=<rendezvous.type>` + `meetings.requested_reason=rendezvous` 로 followup-review 를 자동 소집.
|
|
266
|
-
4. fork 회의 id 는 `progress.json.meetings.fork_meeting_id` 로 followup 회의에 전달된다.
|
|
267
|
-
|
|
268
|
-
Meeting-Manager 는 트랙 dispatch 자체에 관여하지 않는다. fork 회의록의 decision JSON 만 정확히 작성하면 된다.
|
|
269
|
-
|
|
270
|
-
### 7.05.4 Followup Review 진행 방식
|
|
271
|
-
|
|
272
|
-
소집 직후 `notice.md` 에는 fork 회의 id 와 트랙 deliverable 경로 목록이 자동 채워진다. Meeting-Manager 는 다음 순서로 진행:
|
|
273
|
-
|
|
274
|
-
1. **트랙 산출물 수집**: `prior_tracks[]` 의 각 `deliverable_path` 를 읽어 prep 양식에 요약을 넣는다 (`prep-cto.md` 에 hotfix-result, `prep-planner.md` 에 validation-report). `fork_context` 가 비어 있어도 `conductor.tracks` 또는 `meetings.decision.tracks` 로 복구한다.
|
|
275
|
-
2. **결정자 지정**: 기본 결정자 = CTO (운영 적용 여부). 단 fork 회의가 `goal-intake` 또는 `goal-drift` 였으면 CEO(Dispatcher) 로 escalate.
|
|
276
|
-
3. **세 가지 통합 결정 중 하나**:
|
|
277
|
-
- `apply-now` — 두 산출물을 즉시 정규 sprint artifact 로 승격. 다음 owner = planner (sprint-contract 갱신).
|
|
278
|
-
- `backlog` — 백로그/queue 에 work package 등록. 다음 owner = planner (feature-list append) 이며 Conductor 가 가능한 시점에 자동 배정.
|
|
279
|
-
- `more-validation` — 추가 검증 필요. 다시 parallel fork 또는 단일 spec-review.
|
|
280
|
-
4. 결정은 **single mode** 로 작성한다 (followup 자체에서 또 fork 하지 말 것 — 무한 fork 방지).
|
|
281
|
-
|
|
282
|
-
### 7.05.5 안전 가드
|
|
283
|
-
|
|
284
|
-
- **Followup 무한 fork 금지**: followup-review 의 결정 JSON 은 `tracks.length ≤ 1` 만 허용 (또는 tracks 자체를 비움). 추가 분할이 필요하면 별도 spec-review 로 회부.
|
|
285
|
-
- **Track abandon**: 트랙이 24h 이상 stuck 또는 owner 가 escalation 발신 → 해당 트랙 `status: abandoned`, 나머지 진행 + followup 에서 사유 명시.
|
|
286
|
-
- **Fork 폭주 방지**: 한 sprint 내 parallel fork 가 ≥ 3회 발생하면 다음 fork 는 single 로 강제 (회의 분해 시그널).
|
|
287
|
-
|
|
288
|
-
## 7.1 회의 진행 방식
|
|
289
|
-
|
|
290
|
-
Meeting-Manager는 단순히 "토론해 주세요"라고 말하지 않는다. 각 참석자에게 역할별 prep를 요청한다.
|
|
291
|
-
|
|
292
|
-
- `Dispatcher/CEO`: Goal 자체가 흔들렸는가, Owner escalation 이 필요한가
|
|
293
|
-
- `Planner/COO`: 기획/가설/웹리서치/레퍼런스 재검토가 필요한가
|
|
294
|
-
- `COO Hypothesis Cell`: 실험으로 바로 검증 가능한가, 어떤 백데이터/리서치가 필요한가
|
|
295
|
-
- `CTO`: 구현/아키텍처/기술선택 문제가 원인인가
|
|
296
|
-
- `CQO`: 품질/회귀/검증 부족이 원인인가
|
|
297
|
-
- `Service-Ops`: KPI/로그/incident 기준으로 어떤 drift 가 발생했는가
|
|
298
|
-
|
|
299
|
-
회의 종료 시 `decision.owner`, `action_type`, `rationale`, `evidence`, `drift_classification` 이 비어 있으면 회의는 미완료로 본다.
|
|
300
|
-
|
|
301
|
-
## 8. Cron 통합 (Service-Ops 위임)
|
|
302
|
-
|
|
303
|
-
Meeting-Manager 자체는 cron을 돌리지 않음. Service-Ops가 매 hourly 틱에서:
|
|
304
|
-
1. cadence 모드에 따라 다음 스케줄 시각 계산
|
|
305
|
-
2. 도달 시 Meeting-Manager에 `convene(type=standup)` 요청
|
|
306
|
-
3. Meeting-Manager가 라이프사이클 실행
|
|
307
|
-
|
|
308
|
-
이로써 cron 책임이 Service-Ops에 일원화되고, Meeting-Manager는 순수 회의 도메인에 집중.
|
|
309
|
-
|
|
310
|
-
## 9. Event 트리거 카탈로그
|
|
311
|
-
|
|
312
|
-
| Event 발신처 | 조건 | 소집 회의 |
|
|
313
|
-
|---|---|---|
|
|
314
|
-
| Dispatcher | 신규 GOAL / 재플래닝 시작 | All-Hands (`goal-intake`) |
|
|
315
|
-
| Eval-* | `## Change Request` 첨부 | Spec Review |
|
|
316
|
-
| Conductor | 3회 FAIL | Spec Review (scope 축소 검토) |
|
|
317
|
-
| Service-Ops | red-alert (5xx 임계 / 헬스 실패) | Incident War Room |
|
|
318
|
-
| Conductor | Sprint 종료 (모든 feature PASS) | Sprint Review |
|
|
319
|
-
| Planner | Phase 전환 요청 | All-Hands (Phase Gate) |
|
|
320
|
-
| Owner | `/meeting convene <type>` | 해당 타입 (manual) |
|
|
321
|
-
| Service-Ops | `goal_adherence < 0.5` 24h | Spec Review (긴급) |
|
|
322
|
-
| Conductor | parallel tracks 모두 완료 또는 `rendezvous.when` 도달 | **Followup Review** *(v6.2)* |
|
|
323
|
-
|
|
324
|
-
## 10. Action Item 디스패치
|
|
325
|
-
|
|
326
|
-
회의 종료 시 모든 Action Item은 기존 queue enqueue (v5.9.6) 재사용:
|
|
327
|
-
|
|
328
|
-
```bash
|
|
329
|
-
bash scripts/queue-enqueue.sh --owner generator-backend --feature <feature-id> --description "<text>" --due "<iso>" --source-meeting <meeting-id>
|
|
330
|
-
```
|
|
331
|
-
|
|
332
|
-
큐에 들어간 항목은 Conductor가 다음 틱에서 자연스럽게 spawn.
|
|
333
|
-
|
|
334
|
-
## 11. Owner 가시성 정책
|
|
335
|
-
|
|
336
|
-
- **기본**: 회의록은 대시보드(`apps/harness-dashboard`) 회의실 룸에 핀, Owner가 클릭해서 조회
|
|
337
|
-
- **푸시 발생**: Sprint Review / Phase Gate / Incident War Room → Dispatcher가 다음 Owner 메시지에서 1줄 요약 보고
|
|
338
|
-
- **요청 시**: Owner가 "오늘 회의 요약" / `/meetings today` → 최근 N건 헤더 + 미해결 Action Item 출력
|
|
339
|
-
|
|
340
|
-
## 12. Session Boundary Protocol
|
|
341
|
-
|
|
342
|
-
> **데이터 계약 (Inviolable):** `progress.json.meetings.active` 는 **현재 회의 중인 에이전트 ID 들의 평탄 배열** 이다 (예: `["dispatcher","planner","cto"]`). 대시보드 `state-mapping.ts` 가 이 배열을 `Array.includes(agentId)` 로 검사해 미니피규어를 회의실로 텔레포트시킨다 (`talking` 상태). 객체 배열을 넣으면 회의실에 아무도 모이지 않는다.
|
|
343
|
-
>
|
|
344
|
-
> 회의별 메타데이터(상태/참석자/타입)는 `meetings.tracking[]` 에 별도 보관한다.
|
|
345
|
-
|
|
346
|
-
### On Start (소집 1회)
|
|
347
|
-
1. `.harness/progress.json` 읽기 → 현재 `meetings.tracking[]` 확인 (중복 방지)
|
|
348
|
-
2. meeting-id 발급 (`M-YYYY-MM-DD-NNNN`)
|
|
349
|
-
3. `.harness/actions/meetings/<id>/notice.md` 작성
|
|
350
|
-
4. partial update — 메타 등록만, active 는 아직 비움:
|
|
351
|
-
```bash
|
|
352
|
-
bash scripts/harness-progress-set.sh . \
|
|
353
|
-
'.meetings.tracking = (.meetings.tracking // []) + [
|
|
354
|
-
{"id": "<meeting-id>", "type": "<type>", "participants": ["<id1>","<id2>",...], "status": "notice"}
|
|
355
|
-
] |
|
|
356
|
-
.meetings.current_id = "<meeting-id>" |
|
|
357
|
-
.meetings.requested_type = "<type>"'
|
|
358
|
-
```
|
|
359
|
-
|
|
360
|
-
### On Prep Collected (회의 시작 — 미니피규어 회의실 모음)
|
|
361
|
-
1. 모든 참석자 prep-*.md 존재 확인 (timeout: standup 5min, 그 외 30min)
|
|
362
|
-
2. timeout 시 결석 처리 + 회의록에 명시
|
|
363
|
-
3. partial update — **참석자 ID 들을 `meetings.active` 평탄 배열에 그대로 넣는다**:
|
|
364
|
-
```bash
|
|
365
|
-
bash scripts/harness-progress-set.sh . \
|
|
366
|
-
'.meetings.active = ["<id1>","<id2>","<id3>"] |
|
|
367
|
-
.meetings.cadence = "<cadence>" |
|
|
368
|
-
.meetings.tracking |= map(if .id == "<meeting-id>" then .status = "convened" else . end)'
|
|
369
|
-
```
|
|
370
|
-
4. 회의 본 진행 (의제·발언·결정) — 이 시간 동안 대시보드에서 미니피규어가 회의실에 모여 있는 상태로 보임.
|
|
371
|
-
|
|
372
|
-
### On Decided (회의 종료 — 미니피규어 desk 복귀)
|
|
373
|
-
1. 회의록 finalize → `meeting-<id>.md`
|
|
374
|
-
2. Action Items → queue enqueue
|
|
375
|
-
3. partial update — **`meetings.active` 를 빈 배열로 즉시 비운다** (미니피규어 desk 복귀):
|
|
376
|
-
```bash
|
|
377
|
-
bash scripts/harness-progress-set.sh . \
|
|
378
|
-
'.meetings.active = [] |
|
|
379
|
-
.meetings.tracking |= map(if .id == "<meeting-id>" then .status = "dispatched" else . end) |
|
|
380
|
-
.meetings.open_action_items = ((.meetings.open_action_items // 0) + <N>) |
|
|
381
|
-
.meetings.last_type = "<type>" |
|
|
382
|
-
.meetings.last_reason = "<reason>" |
|
|
383
|
-
.meetings.last_decision = "<owner>:<action_type>"'
|
|
384
|
-
```
|
|
385
|
-
4. cadence 재계산 요청 (Service-Ops에 위임)
|
|
386
|
-
5. 기본 handoff 규칙:
|
|
387
|
-
- `goal-intake` / `goal-drift` / `spec-review` / `incident-followup` → `planner(COO)`
|
|
388
|
-
- `ops-batch` / `operating-review` / `quality-fail` → `cto`
|
|
389
|
-
- `rendezvous` (followup-review 결정 시) → 결정자 = `cto` 기본, 단 fork 회의가 `goal-intake|goal-drift` 였으면 `dispatcher` 로 escalate
|
|
390
|
-
|
|
391
|
-
### On Archived
|
|
392
|
-
1. `.harness/archive/meetings/<id>/` 로 이동
|
|
393
|
-
2. partial update — `meetings.tracking` 에서 해당 항목 제거:
|
|
394
|
-
```bash
|
|
395
|
-
bash scripts/harness-progress-set.sh . \
|
|
396
|
-
'.meetings.tracking |= map(select(.id != "<meeting-id>"))'
|
|
397
|
-
```
|
|
398
|
-
|
|
399
|
-
### 회의 가시성 자가검증 (turn 종료 직전)
|
|
400
|
-
|
|
401
|
-
- [ ] 내가 "회의 했다" 라고 보고하려는 모든 회의에 대해 `.harness/actions/meetings/<id>/meeting-<id>.md` 가 디스크에 존재하는가?
|
|
402
|
-
- [ ] convened 상태일 동안 `meetings.active` 에 모든 참석자 ID 가 들어 있었는가? (대시보드에서 회의실에 모이는 모습이 안 보였다면 이 단계가 누락된 것)
|
|
403
|
-
- [ ] dispatched 직후 `meetings.active = []` 로 비웠는가? (안 비우면 미니피규어가 회의실에 영구 갇힘)
|
|
404
|
-
- 하나라도 No → 이번 회의는 "보고만 했고 보여주지 못함" 이므로 자기 진행 보고에서 제외하고 정정.
|
|
405
|
-
|
|
406
|
-
## 13. 안전 가드
|
|
407
|
-
|
|
408
|
-
- **회의 중복 방지**: 같은 type이 active이면 새 소집 무시 (incident만 예외)
|
|
409
|
-
- **prep 누락**: 5분(standup) / 30분(그 외) timeout, 결석자 표시 후 진행
|
|
410
|
-
- **무한 회의 방지**: 한 Sprint 내 같은 type 회의 ≥ 5회면 escalation
|
|
411
|
-
- **CEO override 남용 방지**: Owner override 카운트를 회의록에 기록, Sprint Review에서 회고
|
|
412
|
-
|
|
413
|
-
## 14. 출처 (Attribution)
|
|
414
|
-
|
|
415
|
-
본 스킬은 https://github.com/msitarzewski/agency-agents (MIT) 의 다음을 재해석함:
|
|
416
|
-
- `strategy/coordination/handoff-templates.md` — Standup·Sprint·Phase Gate 양식
|
|
417
|
-
- `strategy/runbooks/scenario-incident-response.md` — War Room 패턴
|
|
418
|
-
- `specialized/specialized-chief-of-staff.md` — 회의 사회·문서 의존성 그래프 관리
|
|
419
|
-
- `support/support-executive-summary-generator.md` — 회의록 요약 출력
|