aios-core 2.1.6 → 2.2.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/.aios-core/core/README.md +229 -229
- package/.aios-core/core/data/agent-config-requirements.yaml +368 -368
- package/.aios-core/core/data/aios-kb.md +923 -923
- package/.aios-core/core/data/workflow-patterns.yaml +267 -267
- package/.aios-core/core/docs/SHARD-TRANSLATION-GUIDE.md +335 -335
- package/.aios-core/core/docs/component-creation-guide.md +457 -457
- package/.aios-core/core/docs/session-update-pattern.md +307 -307
- package/.aios-core/core/docs/template-syntax.md +266 -266
- package/.aios-core/core/docs/troubleshooting-guide.md +624 -624
- package/.aios-core/core/elicitation/elicitation-engine.js +1 -1
- package/.aios-core/core/index.esm.js +42 -42
- package/.aios-core/core/index.js +1 -1
- package/.aios-core/core/migration/migration-config.yaml +83 -83
- package/.aios-core/core/migration/module-mapping.yaml +89 -89
- package/.aios-core/core/quality-gates/layer2-pr-automation.js +1 -1
- package/.aios-core/core/quality-gates/quality-gate-config.yaml +86 -86
- package/.aios-core/core/registry/README.md +179 -179
- package/.aios-core/core/utils/security-utils.js +1 -1
- package/.aios-core/core-config.yaml +391 -382
- package/.aios-core/data/agent-config-requirements.yaml +368 -368
- package/.aios-core/data/aios-kb.md +923 -923
- package/.aios-core/data/technical-preferences.md +3 -3
- package/.aios-core/data/workflow-patterns.yaml +267 -267
- package/.aios-core/development/README.md +142 -142
- package/.aios-core/development/agent-teams/team-all.yaml +15 -15
- package/.aios-core/development/agent-teams/team-fullstack.yaml +18 -18
- package/.aios-core/development/agent-teams/team-ide-minimal.yaml +10 -10
- package/.aios-core/development/agent-teams/team-no-ui.yaml +13 -13
- package/.aios-core/development/agent-teams/team-qa-focused.yaml +155 -155
- package/.aios-core/development/agents/aios-master.md +339 -339
- package/.aios-core/development/agents/analyst.md +195 -195
- package/.aios-core/development/agents/architect.md +359 -359
- package/.aios-core/development/agents/data-engineer.md +468 -468
- package/.aios-core/development/agents/dev.md +390 -390
- package/.aios-core/development/agents/devops.md +398 -398
- package/.aios-core/development/agents/pm.md +198 -198
- package/.aios-core/development/agents/po.md +256 -256
- package/.aios-core/development/agents/qa.md +312 -312
- package/.aios-core/development/agents/sm.md +220 -220
- package/.aios-core/development/agents/ux-design-expert.md +451 -451
- package/.aios-core/development/scripts/greeting-config-cli.js +85 -85
- package/.aios-core/development/tasks/add-mcp.md +319 -319
- package/.aios-core/development/tasks/advanced-elicitation.md +318 -318
- package/.aios-core/development/tasks/analyst-facilitate-brainstorming.md +341 -341
- package/.aios-core/development/tasks/analyze-framework.md +696 -696
- package/.aios-core/development/tasks/analyze-performance.md +637 -637
- package/.aios-core/development/tasks/apply-qa-fixes.md +340 -340
- package/.aios-core/development/tasks/architect-analyze-impact.md +826 -826
- package/.aios-core/development/tasks/audit-codebase.md +429 -429
- package/.aios-core/development/tasks/audit-tailwind-config.md +270 -270
- package/.aios-core/development/tasks/audit-utilities.md +358 -358
- package/.aios-core/development/tasks/bootstrap-shadcn-library.md +286 -286
- package/.aios-core/development/tasks/brownfield-create-epic.md +485 -485
- package/.aios-core/development/tasks/brownfield-create-story.md +356 -356
- package/.aios-core/development/tasks/build-component.md +478 -478
- package/.aios-core/development/tasks/calculate-roi.md +455 -455
- package/.aios-core/development/tasks/ci-cd-configuration.md +764 -764
- package/.aios-core/development/tasks/cleanup-utilities.md +670 -670
- package/.aios-core/development/tasks/collaborative-edit.md +1108 -1108
- package/.aios-core/development/tasks/compose-molecule.md +284 -284
- package/.aios-core/development/tasks/consolidate-patterns.md +414 -414
- package/.aios-core/development/tasks/correct-course.md +279 -279
- package/.aios-core/development/tasks/create-agent.md +321 -321
- package/.aios-core/development/tasks/create-brownfield-story.md +726 -726
- package/.aios-core/development/tasks/create-deep-research-prompt.md +498 -498
- package/.aios-core/development/tasks/create-doc.md +316 -316
- package/.aios-core/development/tasks/create-next-story.md +774 -774
- package/.aios-core/development/tasks/create-suite.md +283 -283
- package/.aios-core/development/tasks/create-task.md +371 -371
- package/.aios-core/development/tasks/create-workflow.md +370 -370
- package/.aios-core/development/tasks/db-analyze-hotpaths.md +572 -572
- package/.aios-core/development/tasks/db-apply-migration.md +381 -381
- package/.aios-core/development/tasks/db-bootstrap.md +642 -642
- package/.aios-core/development/tasks/db-domain-modeling.md +693 -693
- package/.aios-core/development/tasks/db-dry-run.md +293 -293
- package/.aios-core/development/tasks/db-env-check.md +260 -260
- package/.aios-core/development/tasks/db-expansion-pack-integration.md +663 -663
- package/.aios-core/development/tasks/db-explain.md +631 -631
- package/.aios-core/development/tasks/db-impersonate.md +495 -495
- package/.aios-core/development/tasks/db-load-csv.md +593 -593
- package/.aios-core/development/tasks/db-policy-apply.md +653 -653
- package/.aios-core/development/tasks/db-rls-audit.md +411 -411
- package/.aios-core/development/tasks/db-rollback.md +739 -739
- package/.aios-core/development/tasks/db-run-sql.md +613 -613
- package/.aios-core/development/tasks/db-schema-audit.md +1011 -1011
- package/.aios-core/development/tasks/db-seed.md +390 -390
- package/.aios-core/development/tasks/db-smoke-test.md +351 -351
- package/.aios-core/development/tasks/db-snapshot.md +569 -569
- package/.aios-core/development/tasks/db-supabase-setup.md +712 -712
- package/.aios-core/development/tasks/db-verify-order.md +515 -515
- package/.aios-core/development/tasks/deprecate-component.md +956 -956
- package/.aios-core/development/tasks/dev-apply-qa-fixes.md +318 -318
- package/.aios-core/development/tasks/dev-backlog-debt.md +469 -469
- package/.aios-core/development/tasks/dev-develop-story.md +846 -846
- package/.aios-core/development/tasks/dev-improve-code-quality.md +872 -872
- package/.aios-core/development/tasks/dev-optimize-performance.md +1033 -1033
- package/.aios-core/development/tasks/dev-suggest-refactoring.md +870 -870
- package/.aios-core/development/tasks/dev-validate-next-story.md +348 -348
- package/.aios-core/development/tasks/document-project.md +552 -552
- package/.aios-core/development/tasks/environment-bootstrap.md +1311 -1311
- package/.aios-core/development/tasks/execute-checklist.md +301 -301
- package/.aios-core/development/tasks/export-design-tokens-dtcg.md +274 -274
- package/.aios-core/development/tasks/extend-pattern.md +269 -269
- package/.aios-core/development/tasks/extract-tokens.md +467 -467
- package/.aios-core/development/tasks/facilitate-brainstorming-session.md +518 -518
- package/.aios-core/development/tasks/generate-ai-frontend-prompt.md +260 -260
- package/.aios-core/development/tasks/generate-documentation.md +284 -284
- package/.aios-core/development/tasks/generate-migration-strategy.md +522 -522
- package/.aios-core/development/tasks/generate-shock-report.md +501 -501
- package/.aios-core/development/tasks/github-devops-github-pr-automation.md +427 -427
- package/.aios-core/development/tasks/github-devops-pre-push-quality-gate.md +733 -733
- package/.aios-core/development/tasks/github-devops-repository-cleanup.md +374 -374
- package/.aios-core/development/tasks/github-devops-version-management.md +483 -483
- package/.aios-core/development/tasks/improve-self.md +822 -822
- package/.aios-core/development/tasks/index-docs.md +387 -387
- package/.aios-core/development/tasks/init-project-status.md +506 -506
- package/.aios-core/development/tasks/integrate-expansion-pack.md +314 -314
- package/.aios-core/development/tasks/kb-mode-interaction.md +283 -283
- package/.aios-core/development/tasks/learn-patterns.md +900 -900
- package/.aios-core/development/tasks/mcp-workflow.md +437 -437
- package/.aios-core/development/tasks/modify-agent.md +381 -381
- package/.aios-core/development/tasks/modify-task.md +424 -424
- package/.aios-core/development/tasks/modify-workflow.md +465 -465
- package/.aios-core/development/tasks/po-backlog-add.md +370 -370
- package/.aios-core/development/tasks/po-manage-story-backlog.md +523 -523
- package/.aios-core/development/tasks/po-pull-story-from-clickup.md +540 -540
- package/.aios-core/development/tasks/po-pull-story.md +316 -316
- package/.aios-core/development/tasks/po-stories-index.md +351 -351
- package/.aios-core/development/tasks/po-sync-story-to-clickup.md +457 -457
- package/.aios-core/development/tasks/po-sync-story.md +303 -303
- package/.aios-core/development/tasks/pr-automation.md +701 -701
- package/.aios-core/development/tasks/propose-modification.md +842 -842
- package/.aios-core/development/tasks/qa-backlog-add-followup.md +425 -425
- package/.aios-core/development/tasks/qa-gate.md +373 -373
- package/.aios-core/development/tasks/qa-generate-tests.md +1174 -1174
- package/.aios-core/development/tasks/qa-nfr-assess.md +557 -557
- package/.aios-core/development/tasks/qa-review-proposal.md +1157 -1157
- package/.aios-core/development/tasks/qa-review-story.md +682 -682
- package/.aios-core/development/tasks/qa-risk-profile.md +566 -566
- package/.aios-core/development/tasks/qa-run-tests.md +277 -277
- package/.aios-core/development/tasks/qa-test-design.md +387 -387
- package/.aios-core/development/tasks/qa-trace-requirements.md +476 -476
- package/.aios-core/development/tasks/release-management.md +723 -723
- package/.aios-core/development/tasks/security-audit.md +554 -554
- package/.aios-core/development/tasks/security-scan.md +790 -790
- package/.aios-core/development/tasks/setup-database.md +741 -741
- package/.aios-core/development/tasks/setup-design-system.md +462 -462
- package/.aios-core/development/tasks/setup-github.md +874 -874
- package/.aios-core/development/tasks/setup-llm-routing.md +1 -1
- package/.aios-core/development/tasks/setup-mcp-docker.md +584 -584
- package/.aios-core/development/tasks/setup-project-docs.md +1 -1
- package/.aios-core/development/tasks/shard-doc.md +537 -537
- package/.aios-core/development/tasks/sm-create-next-story.md +480 -480
- package/.aios-core/development/tasks/sync-documentation.md +864 -864
- package/.aios-core/development/tasks/tailwind-upgrade.md +294 -294
- package/.aios-core/development/tasks/test-as-user.md +621 -621
- package/.aios-core/development/tasks/test-validation-task.md +171 -171
- package/.aios-core/development/tasks/undo-last.md +346 -346
- package/.aios-core/development/tasks/update-manifest.md +409 -409
- package/.aios-core/development/tasks/ux-create-wireframe.md +617 -617
- package/.aios-core/development/tasks/ux-ds-scan-artifact.md +672 -672
- package/.aios-core/development/tasks/ux-user-research.md +559 -559
- package/.aios-core/development/tasks/validate-next-story.md +422 -422
- package/.aios-core/development/workflows/README.md +83 -83
- package/.aios-core/development/workflows/brownfield-fullstack.yaml +297 -297
- package/.aios-core/development/workflows/brownfield-service.yaml +187 -187
- package/.aios-core/development/workflows/brownfield-ui.yaml +197 -197
- package/.aios-core/development/workflows/greenfield-fullstack.yaml +333 -333
- package/.aios-core/development/workflows/greenfield-service.yaml +206 -206
- package/.aios-core/development/workflows/greenfield-ui.yaml +235 -235
- package/.aios-core/docs/SHARD-TRANSLATION-GUIDE.md +335 -335
- package/.aios-core/docs/component-creation-guide.md +457 -457
- package/.aios-core/docs/session-update-pattern.md +307 -307
- package/.aios-core/docs/standards/AGENT-PERSONALIZATION-STANDARD-V1.md +572 -572
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-QUICK-REFERENCE.md +185 -185
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-V2.1.md +354 -354
- package/.aios-core/docs/standards/AIOS-FRAMEWORK-MASTER.md +1963 -1963
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-COMPLETE.md +821 -821
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-SUMMARY.md +1190 -1190
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1.md +439 -439
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.2-SUMMARY.md +1339 -1339
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO.md +5398 -5398
- package/.aios-core/docs/standards/EXECUTOR-DECISION-TREE.md +697 -697
- package/.aios-core/docs/standards/OPEN-SOURCE-VS-SERVICE-DIFFERENCES.md +511 -511
- package/.aios-core/docs/standards/QUALITY-GATES-SPECIFICATION.md +556 -556
- package/.aios-core/docs/standards/STANDARDS-INDEX.md +210 -210
- package/.aios-core/docs/standards/STORY-TEMPLATE-V2-SPECIFICATION.md +550 -550
- package/.aios-core/docs/standards/TASK-FORMAT-SPECIFICATION-V1.md +1414 -1414
- package/.aios-core/docs/standards/V3-ARCHITECTURAL-DECISIONS.md +523 -523
- package/.aios-core/docs/template-syntax.md +266 -266
- package/.aios-core/docs/troubleshooting-guide.md +624 -624
- package/.aios-core/index.esm.js +15 -15
- package/.aios-core/index.js +1 -1
- package/.aios-core/infrastructure/README.md +126 -126
- package/.aios-core/infrastructure/integrations/pm-adapters/README.md +59 -59
- package/.aios-core/infrastructure/scripts/approval-workflow.js +1 -1
- package/.aios-core/infrastructure/scripts/batch-creator.js +1 -1
- package/.aios-core/infrastructure/scripts/component-generator.js +3 -3
- package/.aios-core/infrastructure/scripts/component-metadata.js +1 -1
- package/.aios-core/infrastructure/scripts/component-search.js +1 -1
- package/.aios-core/infrastructure/scripts/coverage-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/dependency-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/dependency-impact-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/framework-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/improvement-engine.js +1 -1
- package/.aios-core/infrastructure/scripts/llm-routing/install-llm-routing.js +26 -13
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +127 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free-tracked.sh +108 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd +71 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-proxy.sh +65 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +51 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-usage.sh +16 -0
- package/.aios-core/infrastructure/scripts/llm-routing/usage-tracker/index.js +549 -0
- package/.aios-core/infrastructure/scripts/modification-risk-assessment.js +1 -1
- package/.aios-core/infrastructure/scripts/performance-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/pm-adapter.js +134 -134
- package/.aios-core/infrastructure/scripts/repository-detector.js +3 -3
- package/.aios-core/infrastructure/scripts/template-engine.js +1 -1
- package/.aios-core/infrastructure/scripts/template-validator.js +1 -1
- package/.aios-core/infrastructure/scripts/test-generator.js +1 -1
- package/.aios-core/infrastructure/scripts/test-quality-assessment.js +1 -1
- package/.aios-core/infrastructure/scripts/transaction-manager.js +1 -1
- package/.aios-core/infrastructure/scripts/usage-analytics.js +1 -1
- package/.aios-core/infrastructure/scripts/visual-impact-generator.js +2 -2
- package/.aios-core/infrastructure/templates/github-workflows/README.md +109 -109
- package/.aios-core/infrastructure/tests/regression-suite-v2.md +621 -621
- package/.aios-core/infrastructure/tools/README.md +222 -222
- package/.aios-core/infrastructure/tools/cli/github-cli.yaml +200 -200
- package/.aios-core/infrastructure/tools/cli/railway-cli.yaml +260 -260
- package/.aios-core/infrastructure/tools/cli/supabase-cli.yaml +224 -224
- package/.aios-core/infrastructure/tools/local/ffmpeg.yaml +261 -261
- package/.aios-core/infrastructure/tools/mcp/21st-dev-magic.yaml +127 -127
- package/.aios-core/infrastructure/tools/mcp/browser.yaml +103 -103
- package/.aios-core/infrastructure/tools/mcp/clickup.yaml +534 -534
- package/.aios-core/infrastructure/tools/mcp/context7.yaml +78 -78
- package/.aios-core/infrastructure/tools/mcp/desktop-commander.yaml +180 -180
- package/.aios-core/infrastructure/tools/mcp/exa.yaml +103 -103
- package/.aios-core/infrastructure/tools/mcp/google-workspace.yaml +930 -930
- package/.aios-core/infrastructure/tools/mcp/n8n.yaml +551 -551
- package/.aios-core/infrastructure/tools/mcp/supabase.yaml +808 -808
- package/.aios-core/install-manifest.yaml +347 -347
- package/.aios-core/product/README.md +56 -56
- package/.aios-core/product/checklists/accessibility-wcag-checklist.md +80 -0
- package/.aios-core/product/checklists/architect-checklist.md +443 -443
- package/.aios-core/product/checklists/change-checklist.md +182 -182
- package/.aios-core/product/checklists/component-quality-checklist.md +74 -0
- package/.aios-core/product/checklists/database-design-checklist.md +119 -119
- package/.aios-core/product/checklists/dba-predeploy-checklist.md +97 -97
- package/.aios-core/product/checklists/dba-rollback-checklist.md +99 -99
- package/.aios-core/product/checklists/migration-readiness-checklist.md +75 -0
- package/.aios-core/product/checklists/pattern-audit-checklist.md +88 -0
- package/.aios-core/product/checklists/pm-checklist.md +375 -375
- package/.aios-core/product/checklists/po-master-checklist.md +441 -441
- package/.aios-core/product/checklists/pre-push-checklist.md +108 -108
- package/.aios-core/product/checklists/release-checklist.md +122 -122
- package/.aios-core/product/checklists/story-dod-checklist.md +101 -101
- package/.aios-core/product/checklists/story-draft-checklist.md +215 -215
- package/.aios-core/product/data/atomic-design-principles.md +108 -0
- package/.aios-core/product/data/brainstorming-techniques.md +36 -36
- package/.aios-core/product/data/consolidation-algorithms.md +142 -0
- package/.aios-core/product/data/database-best-practices.md +182 -0
- package/.aios-core/product/data/design-token-best-practices.md +107 -0
- package/.aios-core/product/data/elicitation-methods.md +134 -134
- package/.aios-core/product/data/integration-patterns.md +207 -0
- package/.aios-core/product/data/migration-safety-guide.md +329 -0
- package/.aios-core/product/data/mode-selection-best-practices.md +471 -471
- package/.aios-core/product/data/postgres-tuning-guide.md +300 -0
- package/.aios-core/product/data/rls-security-patterns.md +333 -0
- package/.aios-core/product/data/roi-calculation-guide.md +142 -0
- package/.aios-core/product/data/supabase-patterns.md +330 -0
- package/.aios-core/product/data/test-levels-framework.md +148 -148
- package/.aios-core/product/data/test-priorities-matrix.md +174 -174
- package/.aios-core/product/data/wcag-compliance-guide.md +267 -0
- package/.aios-core/product/templates/1mcp-config.yaml +225 -225
- package/.aios-core/product/templates/activation-instructions-inline-greeting.yaml +63 -63
- package/.aios-core/product/templates/activation-instructions-template.md +258 -258
- package/.aios-core/product/templates/agent-template.yaml +120 -120
- package/.aios-core/product/templates/architecture-tmpl.yaml +650 -650
- package/.aios-core/product/templates/brainstorming-output-tmpl.yaml +155 -155
- package/.aios-core/product/templates/brownfield-architecture-tmpl.yaml +475 -475
- package/.aios-core/product/templates/brownfield-prd-tmpl.yaml +279 -279
- package/.aios-core/product/templates/changelog-template.md +134 -134
- package/.aios-core/product/templates/command-rationalization-matrix.md +152 -152
- package/.aios-core/product/templates/competitor-analysis-tmpl.yaml +292 -292
- package/.aios-core/product/templates/design-story-tmpl.yaml +587 -587
- package/.aios-core/product/templates/ds-artifact-analysis.md +70 -70
- package/.aios-core/product/templates/front-end-architecture-tmpl.yaml +205 -205
- package/.aios-core/product/templates/front-end-spec-tmpl.yaml +348 -348
- package/.aios-core/product/templates/fullstack-architecture-tmpl.yaml +804 -804
- package/.aios-core/product/templates/github-pr-template.md +67 -67
- package/.aios-core/product/templates/gordon-mcp.yaml +140 -140
- package/.aios-core/product/templates/ide-rules/antigravity-rules.md +115 -115
- package/.aios-core/product/templates/ide-rules/claude-rules.md +221 -221
- package/.aios-core/product/templates/ide-rules/cline-rules.md +84 -84
- package/.aios-core/product/templates/ide-rules/copilot-rules.md +92 -92
- package/.aios-core/product/templates/ide-rules/cursor-rules.md +115 -115
- package/.aios-core/product/templates/ide-rules/gemini-rules.md +85 -85
- package/.aios-core/product/templates/ide-rules/roo-rules.md +86 -86
- package/.aios-core/product/templates/ide-rules/trae-rules.md +104 -104
- package/.aios-core/product/templates/ide-rules/windsurf-rules.md +80 -80
- package/.aios-core/product/templates/index-strategy-tmpl.yaml +53 -53
- package/.aios-core/product/templates/market-research-tmpl.yaml +251 -251
- package/.aios-core/product/templates/mcp-workflow.js +271 -271
- package/.aios-core/product/templates/migration-plan-tmpl.yaml +1022 -1022
- package/.aios-core/product/templates/migration-strategy-tmpl.md +524 -524
- package/.aios-core/product/templates/personalized-agent-template.md +258 -258
- package/.aios-core/product/templates/personalized-checklist-template.md +340 -340
- package/.aios-core/product/templates/personalized-task-template-v2.md +905 -905
- package/.aios-core/product/templates/personalized-task-template.md +344 -344
- package/.aios-core/product/templates/personalized-template-file.yaml +322 -322
- package/.aios-core/product/templates/personalized-workflow-template.yaml +460 -460
- package/.aios-core/product/templates/prd-tmpl.yaml +201 -201
- package/.aios-core/product/templates/project-brief-tmpl.yaml +220 -220
- package/.aios-core/product/templates/qa-gate-tmpl.yaml +240 -240
- package/.aios-core/product/templates/rls-policies-tmpl.yaml +1203 -1203
- package/.aios-core/product/templates/schema-design-tmpl.yaml +428 -428
- package/.aios-core/product/templates/state-persistence-tmpl.yaml +219 -219
- package/.aios-core/product/templates/story-tmpl.yaml +331 -331
- package/.aios-core/product/templates/task-execution-report.md +495 -495
- package/.aios-core/product/templates/task-template.md +122 -122
- package/.aios-core/product/templates/token-exports-tailwind-tmpl.js +395 -395
- package/.aios-core/product/templates/tokens-schema-tmpl.yaml +305 -305
- package/.aios-core/product/templates/workflow-template.yaml +133 -133
- package/.aios-core/scripts/README.md +354 -354
- package/.aios-core/scripts/aios-doc-template.md +325 -325
- package/.aios-core/scripts/elicitation-engine.js +1 -1
- package/.aios-core/scripts/test-template-system.js +1 -1
- package/.aios-core/scripts/workflow-management.md +69 -69
- package/.aios-core/user-guide.md +1413 -1413
- package/.aios-core/working-in-the-brownfield.md +361 -361
- package/LICENSE +1 -1
- package/README.md +702 -703
- package/bin/aios-init-old.js +3 -3
- package/bin/aios-init-v4.js +1 -1
- package/bin/aios-init.backup-v1.1.4.js +1 -1
- package/bin/aios-init.js +3 -3
- package/bin/aios.js +279 -279
- package/bin/utils/install-errors.js +339 -339
- package/bin/utils/install-transaction.js +445 -445
- package/index.d.ts +18 -18
- package/index.esm.js +20 -20
- package/index.js +6 -6
- package/package.json +8 -10
- package/packages/installer/src/config/templates/env-template.js +27 -4
- package/packages/installer/src/detection/detect-project-type.js +81 -81
- package/packages/installer/tests/integration/wizard-detection.test.js +8 -6
- package/packages/installer/tests/unit/env-template.test.js +8 -8
- package/src/config/ide-configs.js +1 -1
- package/src/wizard/feedback.js +2 -2
- package/src/wizard/index.js +1 -1
- package/src/wizard/validation/report-generator.js +1 -1
- package/src/wizard/validation/troubleshooting-system.js +13 -13
- package/.aios-core/infrastructure/scripts/_archived/final-todo-count.js +0 -122
- package/.aios-core/infrastructure/scripts/_archived/fix-yaml-formatting.js +0 -89
- package/.aios-core/infrastructure/scripts/_archived/migration-generator.js +0 -780
- package/.aios-core/infrastructure/scripts/_archived/migration-path-generator.js +0 -950
- package/.aios-core/infrastructure/scripts/_archived/phase2-entrada-saida-errors.js +0 -425
- package/.aios-core/infrastructure/scripts/_archived/phase2-spot-check.js +0 -132
- package/.aios-core/infrastructure/scripts/_archived/phase3-tools-scripts-validation.js +0 -381
- package/.aios-core/infrastructure/scripts/_archived/phase4-metadata-performance.js +0 -203
- package/.aios-core/infrastructure/scripts/_archived/test-yaml-parsing.js +0 -24
- package/.aios-core/infrastructure/scripts/_archived/verify-yaml-fix.js +0 -51
- package/.aios-core/tasks/find-component.md.legacy +0 -391
- package/.aios-core/tasks/generate-commit-message.md.legacy +0 -426
- package/.aios-core/tasks/generate-migration.md.legacy +0 -382
- package/.aios-core/tasks/rollback-modification.md.legacy +0 -307
- package/.aios-core/tasks/update-tests.md.legacy +0 -283
|
@@ -1,874 +1,874 @@
|
|
|
1
|
-
# setup-github
|
|
2
|
-
|
|
3
|
-
**Task ID:** setup-github
|
|
4
|
-
**Version:** 1.0.0
|
|
5
|
-
**Created:** 2025-12-08
|
|
6
|
-
**Updated:** 2025-12-08
|
|
7
|
-
**Agent:** @devops (Gage)
|
|
8
|
-
**Story:** 5.10 - GitHub DevOps Setup for User Projects
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## Purpose
|
|
13
|
-
|
|
14
|
-
Configure complete GitHub DevOps infrastructure for user projects created with AIOS. This task copies GitHub Actions workflows, configures CodeRabbit, sets up branch protection, and manages secrets.
|
|
15
|
-
|
|
16
|
-
**This task should be executed AFTER `*environment-bootstrap`**, when the Git repository is already initialized and pushed to GitHub.
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## Execution Modes
|
|
21
|
-
|
|
22
|
-
**Choose your execution mode:**
|
|
23
|
-
|
|
24
|
-
### 1. YOLO Mode - Fast, Autonomous (0-1 prompts)
|
|
25
|
-
- Autonomous setup with sensible defaults
|
|
26
|
-
- Skip optional components, install essential DevOps
|
|
27
|
-
- **Best for:** Experienced developers, quick setup
|
|
28
|
-
|
|
29
|
-
### 2. Interactive Mode - Balanced, Educational (5-10 prompts) **[DEFAULT]**
|
|
30
|
-
- Explicit decision checkpoints
|
|
31
|
-
- Educational explanations for each component
|
|
32
|
-
- **Best for:** Learning, first-time setup, team onboarding
|
|
33
|
-
|
|
34
|
-
### 3. Pre-Flight Planning - Comprehensive Upfront Planning
|
|
35
|
-
- Full analysis phase before any configuration
|
|
36
|
-
- Zero ambiguity execution
|
|
37
|
-
- **Best for:** Enterprise environments, strict policies
|
|
38
|
-
|
|
39
|
-
**Parameter:** `mode` (optional, default: `interactive`)
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
## Task Definition (AIOS Task Format V1.0)
|
|
44
|
-
|
|
45
|
-
```yaml
|
|
46
|
-
task: setupGitHub()
|
|
47
|
-
responsável: Gage (Operator)
|
|
48
|
-
responsavel_type: Agente
|
|
49
|
-
atomic_layer: Organism
|
|
50
|
-
|
|
51
|
-
**Entrada:**
|
|
52
|
-
- campo: project_path
|
|
53
|
-
tipo: string
|
|
54
|
-
origem: Auto-detect (cwd)
|
|
55
|
-
obrigatório: false
|
|
56
|
-
validação: Valid directory with .git and GitHub remote
|
|
57
|
-
|
|
58
|
-
- campo: options
|
|
59
|
-
tipo: object
|
|
60
|
-
origem: User Input
|
|
61
|
-
obrigatório: false
|
|
62
|
-
validação: |
|
|
63
|
-
{
|
|
64
|
-
skip_workflows: boolean, // Skip GitHub Actions setup
|
|
65
|
-
skip_coderabbit: boolean, // Skip CodeRabbit configuration
|
|
66
|
-
skip_branch_protection: boolean, // Skip branch protection rules
|
|
67
|
-
skip_secrets: boolean, // Skip secrets wizard
|
|
68
|
-
project_type: string // node | python | go | rust | mixed
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
**Saída:**
|
|
72
|
-
- campo: devops_setup_report
|
|
73
|
-
tipo: object
|
|
74
|
-
destino: File system (.aios/devops-setup-report.yaml)
|
|
75
|
-
persistido: true
|
|
76
|
-
|
|
77
|
-
- campo: workflows_installed
|
|
78
|
-
tipo: array
|
|
79
|
-
destino: Return value
|
|
80
|
-
persistido: false
|
|
81
|
-
|
|
82
|
-
- campo: protection_enabled
|
|
83
|
-
tipo: boolean
|
|
84
|
-
destino: Return value
|
|
85
|
-
persistido: false
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
## Pre-Conditions
|
|
91
|
-
|
|
92
|
-
**Purpose:** Validate prerequisites BEFORE task execution (blocking)
|
|
93
|
-
|
|
94
|
-
**Checklist:**
|
|
95
|
-
|
|
96
|
-
```yaml
|
|
97
|
-
pre-conditions:
|
|
98
|
-
- [ ] Git repository exists (.git directory present)
|
|
99
|
-
tipo: pre-condition
|
|
100
|
-
blocker: true
|
|
101
|
-
validação: |
|
|
102
|
-
Test-Path ".git" (PowerShell) or [ -d .git ] (bash)
|
|
103
|
-
error_message: "Git repository not found. Run *environment-bootstrap first."
|
|
104
|
-
|
|
105
|
-
- [ ] GitHub remote configured
|
|
106
|
-
tipo: pre-condition
|
|
107
|
-
blocker: true
|
|
108
|
-
validação: |
|
|
109
|
-
git remote get-url origin
|
|
110
|
-
error_message: "GitHub remote not configured. Run *environment-bootstrap first."
|
|
111
|
-
|
|
112
|
-
- [ ] GitHub CLI authenticated
|
|
113
|
-
tipo: pre-condition
|
|
114
|
-
blocker: true
|
|
115
|
-
validação: |
|
|
116
|
-
gh auth status
|
|
117
|
-
error_message: "GitHub CLI not authenticated. Run 'gh auth login'."
|
|
118
|
-
|
|
119
|
-
- [ ] Repository exists on GitHub
|
|
120
|
-
tipo: pre-condition
|
|
121
|
-
blocker: true
|
|
122
|
-
validação: |
|
|
123
|
-
gh repo view
|
|
124
|
-
error_message: "Repository not found on GitHub. Push changes first."
|
|
125
|
-
|
|
126
|
-
- [ ] Not already configured (idempotency check)
|
|
127
|
-
tipo: pre-condition
|
|
128
|
-
blocker: false
|
|
129
|
-
validação: |
|
|
130
|
-
Check .aios/devops-setup-report.yaml existence
|
|
131
|
-
warning_message: "DevOps setup already completed. Use --force to reconfigure."
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
## Post-Conditions
|
|
137
|
-
|
|
138
|
-
**Purpose:** Validate execution success AFTER task completes
|
|
139
|
-
|
|
140
|
-
**Checklist:**
|
|
141
|
-
|
|
142
|
-
```yaml
|
|
143
|
-
post-conditions:
|
|
144
|
-
- [ ] GitHub Actions workflows present in .github/workflows/
|
|
145
|
-
tipo: post-condition
|
|
146
|
-
blocker: true
|
|
147
|
-
validação: |
|
|
148
|
-
Test-Path ".github/workflows/ci.yml"
|
|
149
|
-
error_message: "Workflow installation failed"
|
|
150
|
-
|
|
151
|
-
- [ ] CodeRabbit config present (if not skipped)
|
|
152
|
-
tipo: post-condition
|
|
153
|
-
blocker: false
|
|
154
|
-
validação: |
|
|
155
|
-
Test-Path ".coderabbit.yaml"
|
|
156
|
-
warning_message: "CodeRabbit not configured"
|
|
157
|
-
|
|
158
|
-
- [ ] DevOps setup report generated
|
|
159
|
-
tipo: post-condition
|
|
160
|
-
blocker: false
|
|
161
|
-
validação: |
|
|
162
|
-
Test-Path ".aios/devops-setup-report.yaml"
|
|
163
|
-
error_message: "Setup report not generated"
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
---
|
|
167
|
-
|
|
168
|
-
## Acceptance Criteria
|
|
169
|
-
|
|
170
|
-
**Purpose:** Definitive pass/fail criteria for task completion
|
|
171
|
-
|
|
172
|
-
**Checklist:**
|
|
173
|
-
|
|
174
|
-
```yaml
|
|
175
|
-
acceptance-criteria:
|
|
176
|
-
- [ ] At least ci.yml workflow is installed and valid
|
|
177
|
-
tipo: acceptance-criterion
|
|
178
|
-
blocker: true
|
|
179
|
-
validação: |
|
|
180
|
-
Verify .github/workflows/ci.yml exists and is valid YAML
|
|
181
|
-
error_message: "CI workflow not installed"
|
|
182
|
-
|
|
183
|
-
- [ ] Workflows are customized for project type
|
|
184
|
-
tipo: acceptance-criterion
|
|
185
|
-
blocker: false
|
|
186
|
-
validação: |
|
|
187
|
-
Check node_version, python_version, etc. match project
|
|
188
|
-
error_message: "Workflow customization failed"
|
|
189
|
-
|
|
190
|
-
- [ ] Setup report documents all configurations
|
|
191
|
-
tipo: acceptance-criterion
|
|
192
|
-
blocker: true
|
|
193
|
-
validação: |
|
|
194
|
-
.aios/devops-setup-report.yaml contains all setup details
|
|
195
|
-
error_message: "Setup report incomplete"
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
---
|
|
199
|
-
|
|
200
|
-
## Tools
|
|
201
|
-
|
|
202
|
-
**External/shared resources used by this task:**
|
|
203
|
-
|
|
204
|
-
- **Tool:** github-cli
|
|
205
|
-
- **Purpose:** Repository operations, branch protection, secrets
|
|
206
|
-
- **Source:** .aios-core/infrastructure/tools/cli/github-cli.yaml
|
|
207
|
-
|
|
208
|
-
- **Tool:** git
|
|
209
|
-
- **Purpose:** Local repository operations
|
|
210
|
-
- **Source:** Built-in
|
|
211
|
-
|
|
212
|
-
---
|
|
213
|
-
|
|
214
|
-
## Error Handling
|
|
215
|
-
|
|
216
|
-
**Strategy:** retry-with-alternatives
|
|
217
|
-
|
|
218
|
-
**Common Errors:**
|
|
219
|
-
|
|
220
|
-
1. **Error:** Branch Protection API Failed
|
|
221
|
-
- **Cause:** Insufficient permissions or free tier limitations
|
|
222
|
-
- **Resolution:** Warn user about GitHub free tier limitations
|
|
223
|
-
- **Recovery:** Skip branch protection, document in report
|
|
224
|
-
|
|
225
|
-
2. **Error:** Workflow File Conflict
|
|
226
|
-
- **Cause:** Workflow files already exist
|
|
227
|
-
- **Resolution:** Prompt user to overwrite or merge
|
|
228
|
-
- **Recovery:** Backup existing, install new
|
|
229
|
-
|
|
230
|
-
3. **Error:** Secrets Permission Denied
|
|
231
|
-
- **Cause:** Token doesn't have secrets scope
|
|
232
|
-
- **Resolution:** Re-authenticate with secrets scope
|
|
233
|
-
- **Recovery:** Skip secrets, provide manual instructions
|
|
234
|
-
|
|
235
|
-
---
|
|
236
|
-
|
|
237
|
-
## Performance
|
|
238
|
-
|
|
239
|
-
**Expected Metrics:**
|
|
240
|
-
|
|
241
|
-
```yaml
|
|
242
|
-
duration_expected: 2-5 min
|
|
243
|
-
cost_estimated: $0.00 (no AI tokens, API operations only)
|
|
244
|
-
token_usage: ~300-500 tokens (for guidance only)
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
---
|
|
248
|
-
|
|
249
|
-
## Metadata
|
|
250
|
-
|
|
251
|
-
```yaml
|
|
252
|
-
story: 5.10
|
|
253
|
-
version: 1.0.0
|
|
254
|
-
dependencies:
|
|
255
|
-
- environment-bootstrap.md
|
|
256
|
-
- github-cli.yaml
|
|
257
|
-
tags:
|
|
258
|
-
- devops
|
|
259
|
-
- github
|
|
260
|
-
- workflows
|
|
261
|
-
- ci-cd
|
|
262
|
-
- setup
|
|
263
|
-
updated_at: 2025-12-08
|
|
264
|
-
changelog:
|
|
265
|
-
1.0.0:
|
|
266
|
-
- Initial implementation for Story 5.10
|
|
267
|
-
- GitHub Actions templates support
|
|
268
|
-
- CodeRabbit configuration
|
|
269
|
-
- Branch protection via gh api
|
|
270
|
-
- Secrets wizard integration
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
---
|
|
274
|
-
|
|
275
|
-
## Elicitation
|
|
276
|
-
|
|
277
|
-
```yaml
|
|
278
|
-
elicit: true
|
|
279
|
-
interaction_points:
|
|
280
|
-
- project_type: "What type of project is this? (node/python/go/rust/mixed)"
|
|
281
|
-
- workflows_select: "Which workflows do you want to install?"
|
|
282
|
-
- branch_protection: "Enable branch protection for main? (requires GitHub Pro for private repos)"
|
|
283
|
-
- secrets_configure: "Which secrets do you want to configure?"
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
---
|
|
287
|
-
|
|
288
|
-
## Process
|
|
289
|
-
|
|
290
|
-
### Step 1: Verify Pre-Conditions
|
|
291
|
-
|
|
292
|
-
**Action:** Check all prerequisites are met
|
|
293
|
-
|
|
294
|
-
```powershell
|
|
295
|
-
echo "=== GitHub DevOps Setup Pre-Check ==="
|
|
296
|
-
|
|
297
|
-
# Check Git repository
|
|
298
|
-
if (-not (Test-Path ".git")) {
|
|
299
|
-
Write-Host "❌ Git repository not found"
|
|
300
|
-
Write-Host " Run: @devops *environment-bootstrap"
|
|
301
|
-
exit 1
|
|
302
|
-
}
|
|
303
|
-
Write-Host "✅ Git repository found"
|
|
304
|
-
|
|
305
|
-
# Check GitHub remote
|
|
306
|
-
$remoteUrl = git remote get-url origin 2>$null
|
|
307
|
-
if (-not $remoteUrl) {
|
|
308
|
-
Write-Host "❌ GitHub remote not configured"
|
|
309
|
-
exit 1
|
|
310
|
-
}
|
|
311
|
-
Write-Host "✅ GitHub remote: $remoteUrl"
|
|
312
|
-
|
|
313
|
-
# Check GitHub CLI auth
|
|
314
|
-
$ghStatus = gh auth status 2>&1
|
|
315
|
-
if ($LASTEXITCODE -ne 0) {
|
|
316
|
-
Write-Host "❌ GitHub CLI not authenticated"
|
|
317
|
-
Write-Host " Run: gh auth login"
|
|
318
|
-
exit 1
|
|
319
|
-
}
|
|
320
|
-
Write-Host "✅ GitHub CLI authenticated"
|
|
321
|
-
|
|
322
|
-
# Check repo exists on GitHub
|
|
323
|
-
gh repo view --json name 2>$null
|
|
324
|
-
if ($LASTEXITCODE -ne 0) {
|
|
325
|
-
Write-Host "❌ Repository not found on GitHub"
|
|
326
|
-
exit 1
|
|
327
|
-
}
|
|
328
|
-
Write-Host "✅ Repository exists on GitHub"
|
|
329
|
-
|
|
330
|
-
# Check idempotency
|
|
331
|
-
if (Test-Path ".aios/devops-setup-report.yaml") {
|
|
332
|
-
Write-Host "⚠️ DevOps setup already completed"
|
|
333
|
-
Write-Host " Use --force to reconfigure"
|
|
334
|
-
}
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
---
|
|
338
|
-
|
|
339
|
-
### Step 2: Detect Project Type
|
|
340
|
-
|
|
341
|
-
**Action:** Analyze project to determine type and customize workflows
|
|
342
|
-
|
|
343
|
-
```powershell
|
|
344
|
-
echo "=== Detecting Project Type ==="
|
|
345
|
-
|
|
346
|
-
$projectType = "unknown"
|
|
347
|
-
$detectedFeatures = @()
|
|
348
|
-
|
|
349
|
-
# Node.js detection
|
|
350
|
-
if (Test-Path "package.json") {
|
|
351
|
-
$projectType = "node"
|
|
352
|
-
$detectedFeatures += "Node.js (package.json found)"
|
|
353
|
-
|
|
354
|
-
$pkg = Get-Content "package.json" | ConvertFrom-Json
|
|
355
|
-
if ($pkg.devDependencies.typescript -or $pkg.dependencies.typescript) {
|
|
356
|
-
$detectedFeatures += "TypeScript"
|
|
357
|
-
}
|
|
358
|
-
if ($pkg.devDependencies.jest -or $pkg.devDependencies.vitest) {
|
|
359
|
-
$detectedFeatures += "Test framework (Jest/Vitest)"
|
|
360
|
-
}
|
|
361
|
-
if ($pkg.devDependencies.eslint) {
|
|
362
|
-
$detectedFeatures += "ESLint"
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
# Python detection
|
|
367
|
-
if (Test-Path "requirements.txt" -or Test-Path "pyproject.toml") {
|
|
368
|
-
if ($projectType -eq "node") {
|
|
369
|
-
$projectType = "mixed"
|
|
370
|
-
} else {
|
|
371
|
-
$projectType = "python"
|
|
372
|
-
}
|
|
373
|
-
$detectedFeatures += "Python"
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
# Go detection
|
|
377
|
-
if (Test-Path "go.mod") {
|
|
378
|
-
if ($projectType -ne "unknown") {
|
|
379
|
-
$projectType = "mixed"
|
|
380
|
-
} else {
|
|
381
|
-
$projectType = "go"
|
|
382
|
-
}
|
|
383
|
-
$detectedFeatures += "Go"
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
# Rust detection
|
|
387
|
-
if (Test-Path "Cargo.toml") {
|
|
388
|
-
if ($projectType -ne "unknown") {
|
|
389
|
-
$projectType = "mixed"
|
|
390
|
-
} else {
|
|
391
|
-
$projectType = "rust"
|
|
392
|
-
}
|
|
393
|
-
$detectedFeatures += "Rust"
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
Write-Host "Project type: $projectType"
|
|
397
|
-
Write-Host "Detected features:"
|
|
398
|
-
$detectedFeatures | ForEach-Object { Write-Host " - $_" }
|
|
399
|
-
```
|
|
400
|
-
|
|
401
|
-
**Elicitation Point (if project type uncertain):**
|
|
402
|
-
|
|
403
|
-
```
|
|
404
|
-
Project type detection results:
|
|
405
|
-
|
|
406
|
-
Detected: node (Node.js/TypeScript project)
|
|
407
|
-
|
|
408
|
-
Features found:
|
|
409
|
-
✓ package.json
|
|
410
|
-
✓ TypeScript
|
|
411
|
-
✓ ESLint
|
|
412
|
-
✓ Jest tests
|
|
413
|
-
|
|
414
|
-
Is this correct? (Y/n): _
|
|
415
|
-
|
|
416
|
-
Or select manually:
|
|
417
|
-
1. Node.js/TypeScript
|
|
418
|
-
2. Python
|
|
419
|
-
3. Go
|
|
420
|
-
4. Rust
|
|
421
|
-
5. Mixed (multiple languages)
|
|
422
|
-
```
|
|
423
|
-
|
|
424
|
-
---
|
|
425
|
-
|
|
426
|
-
### Step 3: Install GitHub Actions Workflows
|
|
427
|
-
|
|
428
|
-
**Action:** Copy and customize workflow templates
|
|
429
|
-
|
|
430
|
-
**Elicitation Point:**
|
|
431
|
-
|
|
432
|
-
```
|
|
433
|
-
╔════════════════════════════════════════════════════════════════════════╗
|
|
434
|
-
║ GITHUB ACTIONS WORKFLOW SELECTION ║
|
|
435
|
-
╠════════════════════════════════════════════════════════════════════════╣
|
|
436
|
-
║ ║
|
|
437
|
-
║ Available workflows for Node.js projects: ║
|
|
438
|
-
║ ║
|
|
439
|
-
║ [1] ci.yml - Lint, TypeCheck, Test on PRs (RECOMMENDED) ║
|
|
440
|
-
║ [2] pr-automation.yml - Quality summary, coverage report ║
|
|
441
|
-
║ [3] release.yml - Release automation on tags ║
|
|
442
|
-
║ ║
|
|
443
|
-
║ Select workflows to install (comma-separated, or 'all'): ║
|
|
444
|
-
║ Default: 1,2 (ci + pr-automation) ║
|
|
445
|
-
║ ║
|
|
446
|
-
║ Selection: _ ║
|
|
447
|
-
║ ║
|
|
448
|
-
╚════════════════════════════════════════════════════════════════════════╝
|
|
449
|
-
```
|
|
450
|
-
|
|
451
|
-
**Workflow Installation:**
|
|
452
|
-
|
|
453
|
-
```powershell
|
|
454
|
-
echo "=== Installing GitHub Actions Workflows ==="
|
|
455
|
-
|
|
456
|
-
# Create .github/workflows directory
|
|
457
|
-
New-Item -ItemType Directory -Path ".github/workflows" -Force | Out-Null
|
|
458
|
-
|
|
459
|
-
# Copy ci.yml template with customization
|
|
460
|
-
$ciTemplate = Get-Content ".aios-core/infrastructure/templates/github-workflows/ci.yml.template" -Raw
|
|
461
|
-
|
|
462
|
-
# Substitute variables based on project type
|
|
463
|
-
$ciWorkflow = $ciTemplate `
|
|
464
|
-
-replace '\{\{NODE_VERSION\}\}', '20' `
|
|
465
|
-
-replace '\{\{PROJECT_NAME\}\}', $projectName `
|
|
466
|
-
-replace '\{\{LINT_COMMAND\}\}', 'npm run lint' `
|
|
467
|
-
-replace '\{\{TEST_COMMAND\}\}', 'npm run test:coverage' `
|
|
468
|
-
-replace '\{\{TYPECHECK_COMMAND\}\}', 'npm run typecheck'
|
|
469
|
-
|
|
470
|
-
$ciWorkflow | Out-File -FilePath ".github/workflows/ci.yml" -Encoding utf8
|
|
471
|
-
|
|
472
|
-
Write-Host "✅ Installed ci.yml"
|
|
473
|
-
|
|
474
|
-
# Copy pr-automation.yml
|
|
475
|
-
Copy-Item ".aios-core/infrastructure/templates/github-workflows/pr-automation.yml.template" `
|
|
476
|
-
-Destination ".github/workflows/pr-automation.yml"
|
|
477
|
-
Write-Host "✅ Installed pr-automation.yml"
|
|
478
|
-
|
|
479
|
-
# Copy release.yml
|
|
480
|
-
Copy-Item ".aios-core/infrastructure/templates/github-workflows/release.yml.template" `
|
|
481
|
-
-Destination ".github/workflows/release.yml"
|
|
482
|
-
Write-Host "✅ Installed release.yml"
|
|
483
|
-
```
|
|
484
|
-
|
|
485
|
-
---
|
|
486
|
-
|
|
487
|
-
### Step 4: Configure CodeRabbit
|
|
488
|
-
|
|
489
|
-
**Action:** Generate CodeRabbit configuration based on project structure
|
|
490
|
-
|
|
491
|
-
**Elicitation Point:**
|
|
492
|
-
|
|
493
|
-
```
|
|
494
|
-
╔════════════════════════════════════════════════════════════════════════╗
|
|
495
|
-
║ CODERABBIT CONFIGURATION ║
|
|
496
|
-
╠════════════════════════════════════════════════════════════════════════╣
|
|
497
|
-
║ ║
|
|
498
|
-
║ CodeRabbit provides automated code review on PRs. ║
|
|
499
|
-
║ ║
|
|
500
|
-
║ Review profile options: ║
|
|
501
|
-
║ [1] chill - Minimal feedback, only critical issues ║
|
|
502
|
-
║ [2] balanced - Moderate feedback (RECOMMENDED) ║
|
|
503
|
-
║ [3] assertive - Comprehensive feedback, strict standards ║
|
|
504
|
-
║ ║
|
|
505
|
-
║ Select profile (1/2/3): _ ║
|
|
506
|
-
║ ║
|
|
507
|
-
║ ⚠️ Note: Install CodeRabbit GitHub App after setup: ║
|
|
508
|
-
║ https://github.com/apps/coderabbitai ║
|
|
509
|
-
║ ║
|
|
510
|
-
╚════════════════════════════════════════════════════════════════════════╝
|
|
511
|
-
```
|
|
512
|
-
|
|
513
|
-
**CodeRabbit Configuration:**
|
|
514
|
-
|
|
515
|
-
```powershell
|
|
516
|
-
echo "=== Configuring CodeRabbit ==="
|
|
517
|
-
|
|
518
|
-
# Generate .coderabbit.yaml with project-specific path instructions
|
|
519
|
-
$coderabbitConfig = Get-Content ".aios-core/infrastructure/templates/coderabbit.yaml.template" -Raw
|
|
520
|
-
|
|
521
|
-
# Customize based on project structure
|
|
522
|
-
$pathInstructions = @()
|
|
523
|
-
|
|
524
|
-
if (Test-Path "src") {
|
|
525
|
-
$pathInstructions += @"
|
|
526
|
-
- path: "src/**"
|
|
527
|
-
instructions: |
|
|
528
|
-
Focus on code quality, performance, and security.
|
|
529
|
-
Check for proper error handling and input validation.
|
|
530
|
-
"@
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
if (Test-Path "tests" -or Test-Path "__tests__") {
|
|
534
|
-
$pathInstructions += @"
|
|
535
|
-
- path: "**/*.test.*"
|
|
536
|
-
instructions: |
|
|
537
|
-
Ensure test coverage and edge cases.
|
|
538
|
-
Verify mock implementations are correct.
|
|
539
|
-
"@
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
if (Test-Path "docs") {
|
|
543
|
-
$pathInstructions += @"
|
|
544
|
-
- path: "docs/**"
|
|
545
|
-
instructions: |
|
|
546
|
-
Check clarity and completeness of documentation.
|
|
547
|
-
"@
|
|
548
|
-
}
|
|
549
|
-
|
|
550
|
-
# Substitute variables
|
|
551
|
-
$coderabbitConfig = $coderabbitConfig `
|
|
552
|
-
-replace '\{\{REVIEW_PROFILE\}\}', $reviewProfile `
|
|
553
|
-
-replace '\{\{PATH_INSTRUCTIONS\}\}', ($pathInstructions -join "`n")
|
|
554
|
-
|
|
555
|
-
$coderabbitConfig | Out-File -FilePath ".coderabbit.yaml" -Encoding utf8
|
|
556
|
-
|
|
557
|
-
Write-Host "✅ Created .coderabbit.yaml"
|
|
558
|
-
Write-Host ""
|
|
559
|
-
Write-Host "📌 IMPORTANT: Install the CodeRabbit GitHub App:"
|
|
560
|
-
Write-Host " https://github.com/apps/coderabbitai"
|
|
561
|
-
```
|
|
562
|
-
|
|
563
|
-
---
|
|
564
|
-
|
|
565
|
-
### Step 5: Configure Branch Protection
|
|
566
|
-
|
|
567
|
-
**Action:** Set up branch protection rules via GitHub API
|
|
568
|
-
|
|
569
|
-
**Elicitation Point:**
|
|
570
|
-
|
|
571
|
-
```
|
|
572
|
-
╔════════════════════════════════════════════════════════════════════════╗
|
|
573
|
-
║ BRANCH PROTECTION CONFIGURATION ║
|
|
574
|
-
╠════════════════════════════════════════════════════════════════════════╣
|
|
575
|
-
║ ║
|
|
576
|
-
║ Branch protection ensures code quality before merge. ║
|
|
577
|
-
║ ║
|
|
578
|
-
║ ⚠️ Note: Some features require GitHub Pro (paid) for private repos. ║
|
|
579
|
-
║ ║
|
|
580
|
-
║ Protection rules for 'main': ║
|
|
581
|
-
║ [1] Required status checks (lint, test, typecheck) ║
|
|
582
|
-
║ [2] Require PR reviews before merge ║
|
|
583
|
-
║ [3] Require conversation resolution ║
|
|
584
|
-
║ [4] Prevent force pushes ║
|
|
585
|
-
║ ║
|
|
586
|
-
║ Enable branch protection? (Y/n): _ ║
|
|
587
|
-
║ ║
|
|
588
|
-
║ Number of required reviewers (0-6, default: 1): _ ║
|
|
589
|
-
║ ║
|
|
590
|
-
╚════════════════════════════════════════════════════════════════════════╝
|
|
591
|
-
```
|
|
592
|
-
|
|
593
|
-
**Branch Protection Setup:**
|
|
594
|
-
|
|
595
|
-
```bash
|
|
596
|
-
echo "=== Configuring Branch Protection ==="
|
|
597
|
-
|
|
598
|
-
# Get repository info
|
|
599
|
-
REPO_INFO=$(gh repo view --json owner,name)
|
|
600
|
-
OWNER=$(echo $REPO_INFO | jq -r '.owner.login')
|
|
601
|
-
REPO=$(echo $REPO_INFO | jq -r '.name')
|
|
602
|
-
|
|
603
|
-
# Configure branch protection for main
|
|
604
|
-
gh api \
|
|
605
|
-
--method PUT \
|
|
606
|
-
-H "Accept: application/vnd.github+json" \
|
|
607
|
-
/repos/$OWNER/$REPO/branches/main/protection \
|
|
608
|
-
-f "required_status_checks[strict]=true" \
|
|
609
|
-
-f "required_status_checks[contexts][]=lint" \
|
|
610
|
-
-f "required_status_checks[contexts][]=typecheck" \
|
|
611
|
-
-f "required_status_checks[contexts][]=test" \
|
|
612
|
-
-f "enforce_admins=false" \
|
|
613
|
-
-f "required_pull_request_reviews[required_approving_review_count]=1" \
|
|
614
|
-
-f "required_pull_request_reviews[dismiss_stale_reviews]=true" \
|
|
615
|
-
-f "restrictions=null" \
|
|
616
|
-
-f "allow_force_pushes=false" \
|
|
617
|
-
-f "allow_deletions=false"
|
|
618
|
-
|
|
619
|
-
if [ $? -eq 0 ]; then
|
|
620
|
-
echo "✅ Branch protection enabled for 'main'"
|
|
621
|
-
else
|
|
622
|
-
echo "⚠️ Branch protection setup failed"
|
|
623
|
-
echo " This may be due to GitHub free tier limitations for private repos"
|
|
624
|
-
echo " Manual setup: Settings → Branches → Add branch protection rule"
|
|
625
|
-
fi
|
|
626
|
-
```
|
|
627
|
-
|
|
628
|
-
---
|
|
629
|
-
|
|
630
|
-
### Step 6: Secrets Wizard
|
|
631
|
-
|
|
632
|
-
**Action:** Interactive wizard to configure repository secrets
|
|
633
|
-
|
|
634
|
-
**Elicitation Point:**
|
|
635
|
-
|
|
636
|
-
```
|
|
637
|
-
╔════════════════════════════════════════════════════════════════════════╗
|
|
638
|
-
║ SECRETS CONFIGURATION WIZARD ║
|
|
639
|
-
╠════════════════════════════════════════════════════════════════════════╣
|
|
640
|
-
║ ║
|
|
641
|
-
║ Repository secrets are encrypted values used by GitHub Actions. ║
|
|
642
|
-
║ ║
|
|
643
|
-
║ Common secrets for your project type: ║
|
|
644
|
-
║ ║
|
|
645
|
-
║ [1] CODECOV_TOKEN - Coverage reporting (optional) ║
|
|
646
|
-
║ [2] NPM_TOKEN - NPM publishing (if library) ║
|
|
647
|
-
║ [3] VERCEL_TOKEN - Vercel deployment (if frontend) ║
|
|
648
|
-
║ [4] RAILWAY_TOKEN - Railway deployment (if backend) ║
|
|
649
|
-
║ [5] SUPABASE_URL - Supabase connection (if using) ║
|
|
650
|
-
║ [6] SUPABASE_ANON_KEY - Supabase anonymous key ║
|
|
651
|
-
║ [7] SUPABASE_SERVICE_KEY - Supabase service key (for CI) ║
|
|
652
|
-
║ ║
|
|
653
|
-
║ Select secrets to configure (comma-separated, or 'skip'): _ ║
|
|
654
|
-
║ ║
|
|
655
|
-
╚════════════════════════════════════════════════════════════════════════╝
|
|
656
|
-
```
|
|
657
|
-
|
|
658
|
-
**Secrets Configuration:**
|
|
659
|
-
|
|
660
|
-
```powershell
|
|
661
|
-
echo "=== Configuring Secrets ==="
|
|
662
|
-
|
|
663
|
-
$secretsConfigured = @()
|
|
664
|
-
|
|
665
|
-
# Configure selected secrets
|
|
666
|
-
foreach ($secret in $selectedSecrets) {
|
|
667
|
-
Write-Host ""
|
|
668
|
-
Write-Host "Configuring $secret..."
|
|
669
|
-
|
|
670
|
-
# Prompt for value (masked input)
|
|
671
|
-
$value = Read-Host -AsSecureString "Enter value for $secret"
|
|
672
|
-
$plainValue = [Runtime.InteropServices.Marshal]::PtrToStringAuto(
|
|
673
|
-
[Runtime.InteropServices.Marshal]::SecureStringToBSTR($value)
|
|
674
|
-
)
|
|
675
|
-
|
|
676
|
-
# Set secret via gh cli
|
|
677
|
-
echo $plainValue | gh secret set $secret
|
|
678
|
-
|
|
679
|
-
if ($LASTEXITCODE -eq 0) {
|
|
680
|
-
Write-Host "✅ $secret configured"
|
|
681
|
-
$secretsConfigured += $secret
|
|
682
|
-
} else {
|
|
683
|
-
Write-Host "❌ Failed to set $secret"
|
|
684
|
-
}
|
|
685
|
-
}
|
|
686
|
-
|
|
687
|
-
Write-Host ""
|
|
688
|
-
Write-Host "Secrets configured: $($secretsConfigured.Count)"
|
|
689
|
-
```
|
|
690
|
-
|
|
691
|
-
---
|
|
692
|
-
|
|
693
|
-
### Step 7: Generate Setup Report
|
|
694
|
-
|
|
695
|
-
**Action:** Create comprehensive setup report
|
|
696
|
-
|
|
697
|
-
```powershell
|
|
698
|
-
echo "=== Generating DevOps Setup Report ==="
|
|
699
|
-
|
|
700
|
-
$report = @"
|
|
701
|
-
# AIOS DevOps Setup Report
|
|
702
|
-
# Generated: $(Get-Date -Format "yyyy-MM-ddTHH:mm:ss")
|
|
703
|
-
|
|
704
|
-
setup:
|
|
705
|
-
completed: true
|
|
706
|
-
date: "$(Get-Date -Format "yyyy-MM-ddTHH:mm:ss")"
|
|
707
|
-
project_type: $projectType
|
|
708
|
-
story_id: "5.10"
|
|
709
|
-
|
|
710
|
-
repository:
|
|
711
|
-
url: $remoteUrl
|
|
712
|
-
owner: $repoOwner
|
|
713
|
-
name: $repoName
|
|
714
|
-
|
|
715
|
-
workflows_installed:
|
|
716
|
-
- ci.yml
|
|
717
|
-
- pr-automation.yml
|
|
718
|
-
- release.yml
|
|
719
|
-
|
|
720
|
-
coderabbit:
|
|
721
|
-
configured: true
|
|
722
|
-
profile: $reviewProfile
|
|
723
|
-
config_file: ".coderabbit.yaml"
|
|
724
|
-
github_app_url: "https://github.com/apps/coderabbitai"
|
|
725
|
-
|
|
726
|
-
branch_protection:
|
|
727
|
-
enabled: $branchProtectionEnabled
|
|
728
|
-
branch: "main"
|
|
729
|
-
required_checks:
|
|
730
|
-
- lint
|
|
731
|
-
- typecheck
|
|
732
|
-
- test
|
|
733
|
-
required_reviewers: $requiredReviewers
|
|
734
|
-
|
|
735
|
-
secrets_configured:
|
|
736
|
-
$(($secretsConfigured | ForEach-Object { " - $_" }) -join "`n")
|
|
737
|
-
|
|
738
|
-
next_steps:
|
|
739
|
-
- "Install CodeRabbit GitHub App: https://github.com/apps/coderabbitai"
|
|
740
|
-
- "Create first PR to test CI/CD"
|
|
741
|
-
- "Configure additional secrets as needed"
|
|
742
|
-
- "Review branch protection settings: Settings → Branches"
|
|
743
|
-
|
|
744
|
-
validation_checklist:
|
|
745
|
-
- "[x] GitHub Actions workflows installed"
|
|
746
|
-
- "[$(if($coderabbitConfigured){'x'}else{' '})] CodeRabbit configured"
|
|
747
|
-
- "[$(if($branchProtectionEnabled){'x'}else{' '})] Branch protection enabled"
|
|
748
|
-
- "[$(if($secretsConfigured.Count -gt 0){'x'}else{' '})] Repository secrets configured"
|
|
749
|
-
"@
|
|
750
|
-
|
|
751
|
-
# Ensure .aios directory exists
|
|
752
|
-
New-Item -ItemType Directory -Path ".aios" -Force | Out-Null
|
|
753
|
-
|
|
754
|
-
$report | Out-File -FilePath ".aios/devops-setup-report.yaml" -Encoding utf8
|
|
755
|
-
|
|
756
|
-
Write-Host "✅ Setup report saved to .aios/devops-setup-report.yaml"
|
|
757
|
-
```
|
|
758
|
-
|
|
759
|
-
---
|
|
760
|
-
|
|
761
|
-
### Step 8: Final Summary
|
|
762
|
-
|
|
763
|
-
**Action:** Display completion summary and next steps
|
|
764
|
-
|
|
765
|
-
```
|
|
766
|
-
╔═══════════════════════════════════════════════════════════════════════════╗
|
|
767
|
-
║ ✅ GITHUB DEVOPS SETUP COMPLETE ║
|
|
768
|
-
╠═══════════════════════════════════════════════════════════════════════════╣
|
|
769
|
-
║ ║
|
|
770
|
-
║ Repository: https://github.com/username/my-project ║
|
|
771
|
-
║ Project Type: node (Node.js/TypeScript) ║
|
|
772
|
-
║ ║
|
|
773
|
-
╠═══════════════════════════════════════════════════════════════════════════╣
|
|
774
|
-
║ Configuration Summary ║
|
|
775
|
-
╠═══════════════════════════════════════════════════════════════════════════╣
|
|
776
|
-
║ ║
|
|
777
|
-
║ GitHub Actions: ║
|
|
778
|
-
║ ✅ ci.yml - Lint, TypeCheck, Test ║
|
|
779
|
-
║ ✅ pr-automation.yml - Quality summary, coverage ║
|
|
780
|
-
║ ✅ release.yml - Release automation ║
|
|
781
|
-
║ ║
|
|
782
|
-
║ CodeRabbit: ║
|
|
783
|
-
║ ✅ .coderabbit.yaml created (profile: balanced) ║
|
|
784
|
-
║ ⚠️ Install GitHub App: https://github.com/apps/coderabbitai ║
|
|
785
|
-
║ ║
|
|
786
|
-
║ Branch Protection (main): ║
|
|
787
|
-
║ ✅ Required status checks: lint, typecheck, test ║
|
|
788
|
-
║ ✅ Require 1 PR review ║
|
|
789
|
-
║ ✅ Prevent force pushes ║
|
|
790
|
-
║ ║
|
|
791
|
-
║ Secrets Configured: ║
|
|
792
|
-
║ ✅ CODECOV_TOKEN ║
|
|
793
|
-
║ ⏭️ Others skipped (configure later via Settings → Secrets) ║
|
|
794
|
-
║ ║
|
|
795
|
-
╠═══════════════════════════════════════════════════════════════════════════╣
|
|
796
|
-
║ NEXT STEPS ║
|
|
797
|
-
╠═══════════════════════════════════════════════════════════════════════════╣
|
|
798
|
-
║ ║
|
|
799
|
-
║ 1. Install CodeRabbit GitHub App (required for code review): ║
|
|
800
|
-
║ https://github.com/apps/coderabbitai ║
|
|
801
|
-
║ ║
|
|
802
|
-
║ 2. Create your first PR to test the CI/CD pipeline: ║
|
|
803
|
-
║ git checkout -b feature/test-ci ║
|
|
804
|
-
║ git commit --allow-empty -m "chore: test CI pipeline" ║
|
|
805
|
-
║ git push -u origin feature/test-ci ║
|
|
806
|
-
║ gh pr create --title "Test CI Pipeline" --body "Testing CI setup" ║
|
|
807
|
-
║ ║
|
|
808
|
-
║ 3. Commit the DevOps configuration: ║
|
|
809
|
-
║ git add .github/ .coderabbit.yaml .aios/ ║
|
|
810
|
-
║ git commit -m "chore: add DevOps configuration [Story 5.10]" ║
|
|
811
|
-
║ git push ║
|
|
812
|
-
║ ║
|
|
813
|
-
║ Report saved: .aios/devops-setup-report.yaml ║
|
|
814
|
-
║ ║
|
|
815
|
-
╚═══════════════════════════════════════════════════════════════════════════╝
|
|
816
|
-
|
|
817
|
-
— Gage, DevOps configured with confidence 🚀
|
|
818
|
-
```
|
|
819
|
-
|
|
820
|
-
---
|
|
821
|
-
|
|
822
|
-
## Validation Checklist
|
|
823
|
-
|
|
824
|
-
- [ ] Pre-conditions verified (git, remote, gh auth)
|
|
825
|
-
- [ ] Project type detected
|
|
826
|
-
- [ ] GitHub Actions workflows installed
|
|
827
|
-
- [ ] CodeRabbit configuration created
|
|
828
|
-
- [ ] Branch protection configured (if supported)
|
|
829
|
-
- [ ] Secrets configured (if selected)
|
|
830
|
-
- [ ] Setup report generated
|
|
831
|
-
- [ ] Next steps presented to user
|
|
832
|
-
|
|
833
|
-
---
|
|
834
|
-
|
|
835
|
-
## Troubleshooting
|
|
836
|
-
|
|
837
|
-
### Issue 1: Branch protection API returns 403
|
|
838
|
-
|
|
839
|
-
**Error:** `Resource not accessible by personal access token`
|
|
840
|
-
|
|
841
|
-
**Fix:**
|
|
842
|
-
1. For private repos on free tier, branch protection requires GitHub Pro
|
|
843
|
-
2. Re-authenticate with correct scopes: `gh auth login --scopes repo,admin:repo_hook`
|
|
844
|
-
3. Manual setup via GitHub UI: Settings → Branches
|
|
845
|
-
|
|
846
|
-
### Issue 2: Workflow validation fails
|
|
847
|
-
|
|
848
|
-
**Error:** `Invalid workflow file`
|
|
849
|
-
|
|
850
|
-
**Fix:**
|
|
851
|
-
1. Validate YAML syntax: `yamllint .github/workflows/ci.yml`
|
|
852
|
-
2. Check for tab characters (use spaces only)
|
|
853
|
-
3. Verify action versions are valid
|
|
854
|
-
|
|
855
|
-
### Issue 3: CodeRabbit not reviewing PRs
|
|
856
|
-
|
|
857
|
-
**Fix:**
|
|
858
|
-
1. Verify GitHub App is installed: https://github.com/apps/coderabbitai
|
|
859
|
-
2. Check app has access to the repository
|
|
860
|
-
3. Verify .coderabbit.yaml is in the default branch
|
|
861
|
-
|
|
862
|
-
---
|
|
863
|
-
|
|
864
|
-
## References
|
|
865
|
-
|
|
866
|
-
- [GitHub Actions Documentation](https://docs.github.com/en/actions)
|
|
867
|
-
- [GitHub Branch Protection API](https://docs.github.com/en/rest/branches/branch-protection)
|
|
868
|
-
- [CodeRabbit Documentation](https://docs.coderabbit.ai/)
|
|
869
|
-
- [Story 5.10 - GitHub DevOps Setup](docs/stories/v2.1/sprint-5/story-5.10-github-devops-user-projects.md)
|
|
870
|
-
|
|
871
|
-
---
|
|
872
|
-
|
|
873
|
-
**Status:** ✅ Production Ready
|
|
874
|
-
**Tested On:** Windows 11, macOS Sonoma, Ubuntu 22.04
|
|
1
|
+
# setup-github
|
|
2
|
+
|
|
3
|
+
**Task ID:** setup-github
|
|
4
|
+
**Version:** 1.0.0
|
|
5
|
+
**Created:** 2025-12-08
|
|
6
|
+
**Updated:** 2025-12-08
|
|
7
|
+
**Agent:** @devops (Gage)
|
|
8
|
+
**Story:** 5.10 - GitHub DevOps Setup for User Projects
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Purpose
|
|
13
|
+
|
|
14
|
+
Configure complete GitHub DevOps infrastructure for user projects created with AIOS. This task copies GitHub Actions workflows, configures CodeRabbit, sets up branch protection, and manages secrets.
|
|
15
|
+
|
|
16
|
+
**This task should be executed AFTER `*environment-bootstrap`**, when the Git repository is already initialized and pushed to GitHub.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Execution Modes
|
|
21
|
+
|
|
22
|
+
**Choose your execution mode:**
|
|
23
|
+
|
|
24
|
+
### 1. YOLO Mode - Fast, Autonomous (0-1 prompts)
|
|
25
|
+
- Autonomous setup with sensible defaults
|
|
26
|
+
- Skip optional components, install essential DevOps
|
|
27
|
+
- **Best for:** Experienced developers, quick setup
|
|
28
|
+
|
|
29
|
+
### 2. Interactive Mode - Balanced, Educational (5-10 prompts) **[DEFAULT]**
|
|
30
|
+
- Explicit decision checkpoints
|
|
31
|
+
- Educational explanations for each component
|
|
32
|
+
- **Best for:** Learning, first-time setup, team onboarding
|
|
33
|
+
|
|
34
|
+
### 3. Pre-Flight Planning - Comprehensive Upfront Planning
|
|
35
|
+
- Full analysis phase before any configuration
|
|
36
|
+
- Zero ambiguity execution
|
|
37
|
+
- **Best for:** Enterprise environments, strict policies
|
|
38
|
+
|
|
39
|
+
**Parameter:** `mode` (optional, default: `interactive`)
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Task Definition (AIOS Task Format V1.0)
|
|
44
|
+
|
|
45
|
+
```yaml
|
|
46
|
+
task: setupGitHub()
|
|
47
|
+
responsável: Gage (Operator)
|
|
48
|
+
responsavel_type: Agente
|
|
49
|
+
atomic_layer: Organism
|
|
50
|
+
|
|
51
|
+
**Entrada:**
|
|
52
|
+
- campo: project_path
|
|
53
|
+
tipo: string
|
|
54
|
+
origem: Auto-detect (cwd)
|
|
55
|
+
obrigatório: false
|
|
56
|
+
validação: Valid directory with .git and GitHub remote
|
|
57
|
+
|
|
58
|
+
- campo: options
|
|
59
|
+
tipo: object
|
|
60
|
+
origem: User Input
|
|
61
|
+
obrigatório: false
|
|
62
|
+
validação: |
|
|
63
|
+
{
|
|
64
|
+
skip_workflows: boolean, // Skip GitHub Actions setup
|
|
65
|
+
skip_coderabbit: boolean, // Skip CodeRabbit configuration
|
|
66
|
+
skip_branch_protection: boolean, // Skip branch protection rules
|
|
67
|
+
skip_secrets: boolean, // Skip secrets wizard
|
|
68
|
+
project_type: string // node | python | go | rust | mixed
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
**Saída:**
|
|
72
|
+
- campo: devops_setup_report
|
|
73
|
+
tipo: object
|
|
74
|
+
destino: File system (.aios/devops-setup-report.yaml)
|
|
75
|
+
persistido: true
|
|
76
|
+
|
|
77
|
+
- campo: workflows_installed
|
|
78
|
+
tipo: array
|
|
79
|
+
destino: Return value
|
|
80
|
+
persistido: false
|
|
81
|
+
|
|
82
|
+
- campo: protection_enabled
|
|
83
|
+
tipo: boolean
|
|
84
|
+
destino: Return value
|
|
85
|
+
persistido: false
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Pre-Conditions
|
|
91
|
+
|
|
92
|
+
**Purpose:** Validate prerequisites BEFORE task execution (blocking)
|
|
93
|
+
|
|
94
|
+
**Checklist:**
|
|
95
|
+
|
|
96
|
+
```yaml
|
|
97
|
+
pre-conditions:
|
|
98
|
+
- [ ] Git repository exists (.git directory present)
|
|
99
|
+
tipo: pre-condition
|
|
100
|
+
blocker: true
|
|
101
|
+
validação: |
|
|
102
|
+
Test-Path ".git" (PowerShell) or [ -d .git ] (bash)
|
|
103
|
+
error_message: "Git repository not found. Run *environment-bootstrap first."
|
|
104
|
+
|
|
105
|
+
- [ ] GitHub remote configured
|
|
106
|
+
tipo: pre-condition
|
|
107
|
+
blocker: true
|
|
108
|
+
validação: |
|
|
109
|
+
git remote get-url origin
|
|
110
|
+
error_message: "GitHub remote not configured. Run *environment-bootstrap first."
|
|
111
|
+
|
|
112
|
+
- [ ] GitHub CLI authenticated
|
|
113
|
+
tipo: pre-condition
|
|
114
|
+
blocker: true
|
|
115
|
+
validação: |
|
|
116
|
+
gh auth status
|
|
117
|
+
error_message: "GitHub CLI not authenticated. Run 'gh auth login'."
|
|
118
|
+
|
|
119
|
+
- [ ] Repository exists on GitHub
|
|
120
|
+
tipo: pre-condition
|
|
121
|
+
blocker: true
|
|
122
|
+
validação: |
|
|
123
|
+
gh repo view
|
|
124
|
+
error_message: "Repository not found on GitHub. Push changes first."
|
|
125
|
+
|
|
126
|
+
- [ ] Not already configured (idempotency check)
|
|
127
|
+
tipo: pre-condition
|
|
128
|
+
blocker: false
|
|
129
|
+
validação: |
|
|
130
|
+
Check .aios/devops-setup-report.yaml existence
|
|
131
|
+
warning_message: "DevOps setup already completed. Use --force to reconfigure."
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Post-Conditions
|
|
137
|
+
|
|
138
|
+
**Purpose:** Validate execution success AFTER task completes
|
|
139
|
+
|
|
140
|
+
**Checklist:**
|
|
141
|
+
|
|
142
|
+
```yaml
|
|
143
|
+
post-conditions:
|
|
144
|
+
- [ ] GitHub Actions workflows present in .github/workflows/
|
|
145
|
+
tipo: post-condition
|
|
146
|
+
blocker: true
|
|
147
|
+
validação: |
|
|
148
|
+
Test-Path ".github/workflows/ci.yml"
|
|
149
|
+
error_message: "Workflow installation failed"
|
|
150
|
+
|
|
151
|
+
- [ ] CodeRabbit config present (if not skipped)
|
|
152
|
+
tipo: post-condition
|
|
153
|
+
blocker: false
|
|
154
|
+
validação: |
|
|
155
|
+
Test-Path ".coderabbit.yaml"
|
|
156
|
+
warning_message: "CodeRabbit not configured"
|
|
157
|
+
|
|
158
|
+
- [ ] DevOps setup report generated
|
|
159
|
+
tipo: post-condition
|
|
160
|
+
blocker: false
|
|
161
|
+
validação: |
|
|
162
|
+
Test-Path ".aios/devops-setup-report.yaml"
|
|
163
|
+
error_message: "Setup report not generated"
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Acceptance Criteria
|
|
169
|
+
|
|
170
|
+
**Purpose:** Definitive pass/fail criteria for task completion
|
|
171
|
+
|
|
172
|
+
**Checklist:**
|
|
173
|
+
|
|
174
|
+
```yaml
|
|
175
|
+
acceptance-criteria:
|
|
176
|
+
- [ ] At least ci.yml workflow is installed and valid
|
|
177
|
+
tipo: acceptance-criterion
|
|
178
|
+
blocker: true
|
|
179
|
+
validação: |
|
|
180
|
+
Verify .github/workflows/ci.yml exists and is valid YAML
|
|
181
|
+
error_message: "CI workflow not installed"
|
|
182
|
+
|
|
183
|
+
- [ ] Workflows are customized for project type
|
|
184
|
+
tipo: acceptance-criterion
|
|
185
|
+
blocker: false
|
|
186
|
+
validação: |
|
|
187
|
+
Check node_version, python_version, etc. match project
|
|
188
|
+
error_message: "Workflow customization failed"
|
|
189
|
+
|
|
190
|
+
- [ ] Setup report documents all configurations
|
|
191
|
+
tipo: acceptance-criterion
|
|
192
|
+
blocker: true
|
|
193
|
+
validação: |
|
|
194
|
+
.aios/devops-setup-report.yaml contains all setup details
|
|
195
|
+
error_message: "Setup report incomplete"
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## Tools
|
|
201
|
+
|
|
202
|
+
**External/shared resources used by this task:**
|
|
203
|
+
|
|
204
|
+
- **Tool:** github-cli
|
|
205
|
+
- **Purpose:** Repository operations, branch protection, secrets
|
|
206
|
+
- **Source:** .aios-core/infrastructure/tools/cli/github-cli.yaml
|
|
207
|
+
|
|
208
|
+
- **Tool:** git
|
|
209
|
+
- **Purpose:** Local repository operations
|
|
210
|
+
- **Source:** Built-in
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Error Handling
|
|
215
|
+
|
|
216
|
+
**Strategy:** retry-with-alternatives
|
|
217
|
+
|
|
218
|
+
**Common Errors:**
|
|
219
|
+
|
|
220
|
+
1. **Error:** Branch Protection API Failed
|
|
221
|
+
- **Cause:** Insufficient permissions or free tier limitations
|
|
222
|
+
- **Resolution:** Warn user about GitHub free tier limitations
|
|
223
|
+
- **Recovery:** Skip branch protection, document in report
|
|
224
|
+
|
|
225
|
+
2. **Error:** Workflow File Conflict
|
|
226
|
+
- **Cause:** Workflow files already exist
|
|
227
|
+
- **Resolution:** Prompt user to overwrite or merge
|
|
228
|
+
- **Recovery:** Backup existing, install new
|
|
229
|
+
|
|
230
|
+
3. **Error:** Secrets Permission Denied
|
|
231
|
+
- **Cause:** Token doesn't have secrets scope
|
|
232
|
+
- **Resolution:** Re-authenticate with secrets scope
|
|
233
|
+
- **Recovery:** Skip secrets, provide manual instructions
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## Performance
|
|
238
|
+
|
|
239
|
+
**Expected Metrics:**
|
|
240
|
+
|
|
241
|
+
```yaml
|
|
242
|
+
duration_expected: 2-5 min
|
|
243
|
+
cost_estimated: $0.00 (no AI tokens, API operations only)
|
|
244
|
+
token_usage: ~300-500 tokens (for guidance only)
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## Metadata
|
|
250
|
+
|
|
251
|
+
```yaml
|
|
252
|
+
story: 5.10
|
|
253
|
+
version: 1.0.0
|
|
254
|
+
dependencies:
|
|
255
|
+
- environment-bootstrap.md
|
|
256
|
+
- github-cli.yaml
|
|
257
|
+
tags:
|
|
258
|
+
- devops
|
|
259
|
+
- github
|
|
260
|
+
- workflows
|
|
261
|
+
- ci-cd
|
|
262
|
+
- setup
|
|
263
|
+
updated_at: 2025-12-08
|
|
264
|
+
changelog:
|
|
265
|
+
1.0.0:
|
|
266
|
+
- Initial implementation for Story 5.10
|
|
267
|
+
- GitHub Actions templates support
|
|
268
|
+
- CodeRabbit configuration
|
|
269
|
+
- Branch protection via gh api
|
|
270
|
+
- Secrets wizard integration
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## Elicitation
|
|
276
|
+
|
|
277
|
+
```yaml
|
|
278
|
+
elicit: true
|
|
279
|
+
interaction_points:
|
|
280
|
+
- project_type: "What type of project is this? (node/python/go/rust/mixed)"
|
|
281
|
+
- workflows_select: "Which workflows do you want to install?"
|
|
282
|
+
- branch_protection: "Enable branch protection for main? (requires GitHub Pro for private repos)"
|
|
283
|
+
- secrets_configure: "Which secrets do you want to configure?"
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
## Process
|
|
289
|
+
|
|
290
|
+
### Step 1: Verify Pre-Conditions
|
|
291
|
+
|
|
292
|
+
**Action:** Check all prerequisites are met
|
|
293
|
+
|
|
294
|
+
```powershell
|
|
295
|
+
echo "=== GitHub DevOps Setup Pre-Check ==="
|
|
296
|
+
|
|
297
|
+
# Check Git repository
|
|
298
|
+
if (-not (Test-Path ".git")) {
|
|
299
|
+
Write-Host "❌ Git repository not found"
|
|
300
|
+
Write-Host " Run: @devops *environment-bootstrap"
|
|
301
|
+
exit 1
|
|
302
|
+
}
|
|
303
|
+
Write-Host "✅ Git repository found"
|
|
304
|
+
|
|
305
|
+
# Check GitHub remote
|
|
306
|
+
$remoteUrl = git remote get-url origin 2>$null
|
|
307
|
+
if (-not $remoteUrl) {
|
|
308
|
+
Write-Host "❌ GitHub remote not configured"
|
|
309
|
+
exit 1
|
|
310
|
+
}
|
|
311
|
+
Write-Host "✅ GitHub remote: $remoteUrl"
|
|
312
|
+
|
|
313
|
+
# Check GitHub CLI auth
|
|
314
|
+
$ghStatus = gh auth status 2>&1
|
|
315
|
+
if ($LASTEXITCODE -ne 0) {
|
|
316
|
+
Write-Host "❌ GitHub CLI not authenticated"
|
|
317
|
+
Write-Host " Run: gh auth login"
|
|
318
|
+
exit 1
|
|
319
|
+
}
|
|
320
|
+
Write-Host "✅ GitHub CLI authenticated"
|
|
321
|
+
|
|
322
|
+
# Check repo exists on GitHub
|
|
323
|
+
gh repo view --json name 2>$null
|
|
324
|
+
if ($LASTEXITCODE -ne 0) {
|
|
325
|
+
Write-Host "❌ Repository not found on GitHub"
|
|
326
|
+
exit 1
|
|
327
|
+
}
|
|
328
|
+
Write-Host "✅ Repository exists on GitHub"
|
|
329
|
+
|
|
330
|
+
# Check idempotency
|
|
331
|
+
if (Test-Path ".aios/devops-setup-report.yaml") {
|
|
332
|
+
Write-Host "⚠️ DevOps setup already completed"
|
|
333
|
+
Write-Host " Use --force to reconfigure"
|
|
334
|
+
}
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
---
|
|
338
|
+
|
|
339
|
+
### Step 2: Detect Project Type
|
|
340
|
+
|
|
341
|
+
**Action:** Analyze project to determine type and customize workflows
|
|
342
|
+
|
|
343
|
+
```powershell
|
|
344
|
+
echo "=== Detecting Project Type ==="
|
|
345
|
+
|
|
346
|
+
$projectType = "unknown"
|
|
347
|
+
$detectedFeatures = @()
|
|
348
|
+
|
|
349
|
+
# Node.js detection
|
|
350
|
+
if (Test-Path "package.json") {
|
|
351
|
+
$projectType = "node"
|
|
352
|
+
$detectedFeatures += "Node.js (package.json found)"
|
|
353
|
+
|
|
354
|
+
$pkg = Get-Content "package.json" | ConvertFrom-Json
|
|
355
|
+
if ($pkg.devDependencies.typescript -or $pkg.dependencies.typescript) {
|
|
356
|
+
$detectedFeatures += "TypeScript"
|
|
357
|
+
}
|
|
358
|
+
if ($pkg.devDependencies.jest -or $pkg.devDependencies.vitest) {
|
|
359
|
+
$detectedFeatures += "Test framework (Jest/Vitest)"
|
|
360
|
+
}
|
|
361
|
+
if ($pkg.devDependencies.eslint) {
|
|
362
|
+
$detectedFeatures += "ESLint"
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
# Python detection
|
|
367
|
+
if (Test-Path "requirements.txt" -or Test-Path "pyproject.toml") {
|
|
368
|
+
if ($projectType -eq "node") {
|
|
369
|
+
$projectType = "mixed"
|
|
370
|
+
} else {
|
|
371
|
+
$projectType = "python"
|
|
372
|
+
}
|
|
373
|
+
$detectedFeatures += "Python"
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
# Go detection
|
|
377
|
+
if (Test-Path "go.mod") {
|
|
378
|
+
if ($projectType -ne "unknown") {
|
|
379
|
+
$projectType = "mixed"
|
|
380
|
+
} else {
|
|
381
|
+
$projectType = "go"
|
|
382
|
+
}
|
|
383
|
+
$detectedFeatures += "Go"
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
# Rust detection
|
|
387
|
+
if (Test-Path "Cargo.toml") {
|
|
388
|
+
if ($projectType -ne "unknown") {
|
|
389
|
+
$projectType = "mixed"
|
|
390
|
+
} else {
|
|
391
|
+
$projectType = "rust"
|
|
392
|
+
}
|
|
393
|
+
$detectedFeatures += "Rust"
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
Write-Host "Project type: $projectType"
|
|
397
|
+
Write-Host "Detected features:"
|
|
398
|
+
$detectedFeatures | ForEach-Object { Write-Host " - $_" }
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
**Elicitation Point (if project type uncertain):**
|
|
402
|
+
|
|
403
|
+
```
|
|
404
|
+
Project type detection results:
|
|
405
|
+
|
|
406
|
+
Detected: node (Node.js/TypeScript project)
|
|
407
|
+
|
|
408
|
+
Features found:
|
|
409
|
+
✓ package.json
|
|
410
|
+
✓ TypeScript
|
|
411
|
+
✓ ESLint
|
|
412
|
+
✓ Jest tests
|
|
413
|
+
|
|
414
|
+
Is this correct? (Y/n): _
|
|
415
|
+
|
|
416
|
+
Or select manually:
|
|
417
|
+
1. Node.js/TypeScript
|
|
418
|
+
2. Python
|
|
419
|
+
3. Go
|
|
420
|
+
4. Rust
|
|
421
|
+
5. Mixed (multiple languages)
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
---
|
|
425
|
+
|
|
426
|
+
### Step 3: Install GitHub Actions Workflows
|
|
427
|
+
|
|
428
|
+
**Action:** Copy and customize workflow templates
|
|
429
|
+
|
|
430
|
+
**Elicitation Point:**
|
|
431
|
+
|
|
432
|
+
```
|
|
433
|
+
╔════════════════════════════════════════════════════════════════════════╗
|
|
434
|
+
║ GITHUB ACTIONS WORKFLOW SELECTION ║
|
|
435
|
+
╠════════════════════════════════════════════════════════════════════════╣
|
|
436
|
+
║ ║
|
|
437
|
+
║ Available workflows for Node.js projects: ║
|
|
438
|
+
║ ║
|
|
439
|
+
║ [1] ci.yml - Lint, TypeCheck, Test on PRs (RECOMMENDED) ║
|
|
440
|
+
║ [2] pr-automation.yml - Quality summary, coverage report ║
|
|
441
|
+
║ [3] release.yml - Release automation on tags ║
|
|
442
|
+
║ ║
|
|
443
|
+
║ Select workflows to install (comma-separated, or 'all'): ║
|
|
444
|
+
║ Default: 1,2 (ci + pr-automation) ║
|
|
445
|
+
║ ║
|
|
446
|
+
║ Selection: _ ║
|
|
447
|
+
║ ║
|
|
448
|
+
╚════════════════════════════════════════════════════════════════════════╝
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
**Workflow Installation:**
|
|
452
|
+
|
|
453
|
+
```powershell
|
|
454
|
+
echo "=== Installing GitHub Actions Workflows ==="
|
|
455
|
+
|
|
456
|
+
# Create .github/workflows directory
|
|
457
|
+
New-Item -ItemType Directory -Path ".github/workflows" -Force | Out-Null
|
|
458
|
+
|
|
459
|
+
# Copy ci.yml template with customization
|
|
460
|
+
$ciTemplate = Get-Content ".aios-core/infrastructure/templates/github-workflows/ci.yml.template" -Raw
|
|
461
|
+
|
|
462
|
+
# Substitute variables based on project type
|
|
463
|
+
$ciWorkflow = $ciTemplate `
|
|
464
|
+
-replace '\{\{NODE_VERSION\}\}', '20' `
|
|
465
|
+
-replace '\{\{PROJECT_NAME\}\}', $projectName `
|
|
466
|
+
-replace '\{\{LINT_COMMAND\}\}', 'npm run lint' `
|
|
467
|
+
-replace '\{\{TEST_COMMAND\}\}', 'npm run test:coverage' `
|
|
468
|
+
-replace '\{\{TYPECHECK_COMMAND\}\}', 'npm run typecheck'
|
|
469
|
+
|
|
470
|
+
$ciWorkflow | Out-File -FilePath ".github/workflows/ci.yml" -Encoding utf8
|
|
471
|
+
|
|
472
|
+
Write-Host "✅ Installed ci.yml"
|
|
473
|
+
|
|
474
|
+
# Copy pr-automation.yml
|
|
475
|
+
Copy-Item ".aios-core/infrastructure/templates/github-workflows/pr-automation.yml.template" `
|
|
476
|
+
-Destination ".github/workflows/pr-automation.yml"
|
|
477
|
+
Write-Host "✅ Installed pr-automation.yml"
|
|
478
|
+
|
|
479
|
+
# Copy release.yml
|
|
480
|
+
Copy-Item ".aios-core/infrastructure/templates/github-workflows/release.yml.template" `
|
|
481
|
+
-Destination ".github/workflows/release.yml"
|
|
482
|
+
Write-Host "✅ Installed release.yml"
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
---
|
|
486
|
+
|
|
487
|
+
### Step 4: Configure CodeRabbit
|
|
488
|
+
|
|
489
|
+
**Action:** Generate CodeRabbit configuration based on project structure
|
|
490
|
+
|
|
491
|
+
**Elicitation Point:**
|
|
492
|
+
|
|
493
|
+
```
|
|
494
|
+
╔════════════════════════════════════════════════════════════════════════╗
|
|
495
|
+
║ CODERABBIT CONFIGURATION ║
|
|
496
|
+
╠════════════════════════════════════════════════════════════════════════╣
|
|
497
|
+
║ ║
|
|
498
|
+
║ CodeRabbit provides automated code review on PRs. ║
|
|
499
|
+
║ ║
|
|
500
|
+
║ Review profile options: ║
|
|
501
|
+
║ [1] chill - Minimal feedback, only critical issues ║
|
|
502
|
+
║ [2] balanced - Moderate feedback (RECOMMENDED) ║
|
|
503
|
+
║ [3] assertive - Comprehensive feedback, strict standards ║
|
|
504
|
+
║ ║
|
|
505
|
+
║ Select profile (1/2/3): _ ║
|
|
506
|
+
║ ║
|
|
507
|
+
║ ⚠️ Note: Install CodeRabbit GitHub App after setup: ║
|
|
508
|
+
║ https://github.com/apps/coderabbitai ║
|
|
509
|
+
║ ║
|
|
510
|
+
╚════════════════════════════════════════════════════════════════════════╝
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
**CodeRabbit Configuration:**
|
|
514
|
+
|
|
515
|
+
```powershell
|
|
516
|
+
echo "=== Configuring CodeRabbit ==="
|
|
517
|
+
|
|
518
|
+
# Generate .coderabbit.yaml with project-specific path instructions
|
|
519
|
+
$coderabbitConfig = Get-Content ".aios-core/infrastructure/templates/coderabbit.yaml.template" -Raw
|
|
520
|
+
|
|
521
|
+
# Customize based on project structure
|
|
522
|
+
$pathInstructions = @()
|
|
523
|
+
|
|
524
|
+
if (Test-Path "src") {
|
|
525
|
+
$pathInstructions += @"
|
|
526
|
+
- path: "src/**"
|
|
527
|
+
instructions: |
|
|
528
|
+
Focus on code quality, performance, and security.
|
|
529
|
+
Check for proper error handling and input validation.
|
|
530
|
+
"@
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
if (Test-Path "tests" -or Test-Path "__tests__") {
|
|
534
|
+
$pathInstructions += @"
|
|
535
|
+
- path: "**/*.test.*"
|
|
536
|
+
instructions: |
|
|
537
|
+
Ensure test coverage and edge cases.
|
|
538
|
+
Verify mock implementations are correct.
|
|
539
|
+
"@
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
if (Test-Path "docs") {
|
|
543
|
+
$pathInstructions += @"
|
|
544
|
+
- path: "docs/**"
|
|
545
|
+
instructions: |
|
|
546
|
+
Check clarity and completeness of documentation.
|
|
547
|
+
"@
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
# Substitute variables
|
|
551
|
+
$coderabbitConfig = $coderabbitConfig `
|
|
552
|
+
-replace '\{\{REVIEW_PROFILE\}\}', $reviewProfile `
|
|
553
|
+
-replace '\{\{PATH_INSTRUCTIONS\}\}', ($pathInstructions -join "`n")
|
|
554
|
+
|
|
555
|
+
$coderabbitConfig | Out-File -FilePath ".coderabbit.yaml" -Encoding utf8
|
|
556
|
+
|
|
557
|
+
Write-Host "✅ Created .coderabbit.yaml"
|
|
558
|
+
Write-Host ""
|
|
559
|
+
Write-Host "📌 IMPORTANT: Install the CodeRabbit GitHub App:"
|
|
560
|
+
Write-Host " https://github.com/apps/coderabbitai"
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
---
|
|
564
|
+
|
|
565
|
+
### Step 5: Configure Branch Protection
|
|
566
|
+
|
|
567
|
+
**Action:** Set up branch protection rules via GitHub API
|
|
568
|
+
|
|
569
|
+
**Elicitation Point:**
|
|
570
|
+
|
|
571
|
+
```
|
|
572
|
+
╔════════════════════════════════════════════════════════════════════════╗
|
|
573
|
+
║ BRANCH PROTECTION CONFIGURATION ║
|
|
574
|
+
╠════════════════════════════════════════════════════════════════════════╣
|
|
575
|
+
║ ║
|
|
576
|
+
║ Branch protection ensures code quality before merge. ║
|
|
577
|
+
║ ║
|
|
578
|
+
║ ⚠️ Note: Some features require GitHub Pro (paid) for private repos. ║
|
|
579
|
+
║ ║
|
|
580
|
+
║ Protection rules for 'main': ║
|
|
581
|
+
║ [1] Required status checks (lint, test, typecheck) ║
|
|
582
|
+
║ [2] Require PR reviews before merge ║
|
|
583
|
+
║ [3] Require conversation resolution ║
|
|
584
|
+
║ [4] Prevent force pushes ║
|
|
585
|
+
║ ║
|
|
586
|
+
║ Enable branch protection? (Y/n): _ ║
|
|
587
|
+
║ ║
|
|
588
|
+
║ Number of required reviewers (0-6, default: 1): _ ║
|
|
589
|
+
║ ║
|
|
590
|
+
╚════════════════════════════════════════════════════════════════════════╝
|
|
591
|
+
```
|
|
592
|
+
|
|
593
|
+
**Branch Protection Setup:**
|
|
594
|
+
|
|
595
|
+
```bash
|
|
596
|
+
echo "=== Configuring Branch Protection ==="
|
|
597
|
+
|
|
598
|
+
# Get repository info
|
|
599
|
+
REPO_INFO=$(gh repo view --json owner,name)
|
|
600
|
+
OWNER=$(echo $REPO_INFO | jq -r '.owner.login')
|
|
601
|
+
REPO=$(echo $REPO_INFO | jq -r '.name')
|
|
602
|
+
|
|
603
|
+
# Configure branch protection for main
|
|
604
|
+
gh api \
|
|
605
|
+
--method PUT \
|
|
606
|
+
-H "Accept: application/vnd.github+json" \
|
|
607
|
+
/repos/$OWNER/$REPO/branches/main/protection \
|
|
608
|
+
-f "required_status_checks[strict]=true" \
|
|
609
|
+
-f "required_status_checks[contexts][]=lint" \
|
|
610
|
+
-f "required_status_checks[contexts][]=typecheck" \
|
|
611
|
+
-f "required_status_checks[contexts][]=test" \
|
|
612
|
+
-f "enforce_admins=false" \
|
|
613
|
+
-f "required_pull_request_reviews[required_approving_review_count]=1" \
|
|
614
|
+
-f "required_pull_request_reviews[dismiss_stale_reviews]=true" \
|
|
615
|
+
-f "restrictions=null" \
|
|
616
|
+
-f "allow_force_pushes=false" \
|
|
617
|
+
-f "allow_deletions=false"
|
|
618
|
+
|
|
619
|
+
if [ $? -eq 0 ]; then
|
|
620
|
+
echo "✅ Branch protection enabled for 'main'"
|
|
621
|
+
else
|
|
622
|
+
echo "⚠️ Branch protection setup failed"
|
|
623
|
+
echo " This may be due to GitHub free tier limitations for private repos"
|
|
624
|
+
echo " Manual setup: Settings → Branches → Add branch protection rule"
|
|
625
|
+
fi
|
|
626
|
+
```
|
|
627
|
+
|
|
628
|
+
---
|
|
629
|
+
|
|
630
|
+
### Step 6: Secrets Wizard
|
|
631
|
+
|
|
632
|
+
**Action:** Interactive wizard to configure repository secrets
|
|
633
|
+
|
|
634
|
+
**Elicitation Point:**
|
|
635
|
+
|
|
636
|
+
```
|
|
637
|
+
╔════════════════════════════════════════════════════════════════════════╗
|
|
638
|
+
║ SECRETS CONFIGURATION WIZARD ║
|
|
639
|
+
╠════════════════════════════════════════════════════════════════════════╣
|
|
640
|
+
║ ║
|
|
641
|
+
║ Repository secrets are encrypted values used by GitHub Actions. ║
|
|
642
|
+
║ ║
|
|
643
|
+
║ Common secrets for your project type: ║
|
|
644
|
+
║ ║
|
|
645
|
+
║ [1] CODECOV_TOKEN - Coverage reporting (optional) ║
|
|
646
|
+
║ [2] NPM_TOKEN - NPM publishing (if library) ║
|
|
647
|
+
║ [3] VERCEL_TOKEN - Vercel deployment (if frontend) ║
|
|
648
|
+
║ [4] RAILWAY_TOKEN - Railway deployment (if backend) ║
|
|
649
|
+
║ [5] SUPABASE_URL - Supabase connection (if using) ║
|
|
650
|
+
║ [6] SUPABASE_ANON_KEY - Supabase anonymous key ║
|
|
651
|
+
║ [7] SUPABASE_SERVICE_KEY - Supabase service key (for CI) ║
|
|
652
|
+
║ ║
|
|
653
|
+
║ Select secrets to configure (comma-separated, or 'skip'): _ ║
|
|
654
|
+
║ ║
|
|
655
|
+
╚════════════════════════════════════════════════════════════════════════╝
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
**Secrets Configuration:**
|
|
659
|
+
|
|
660
|
+
```powershell
|
|
661
|
+
echo "=== Configuring Secrets ==="
|
|
662
|
+
|
|
663
|
+
$secretsConfigured = @()
|
|
664
|
+
|
|
665
|
+
# Configure selected secrets
|
|
666
|
+
foreach ($secret in $selectedSecrets) {
|
|
667
|
+
Write-Host ""
|
|
668
|
+
Write-Host "Configuring $secret..."
|
|
669
|
+
|
|
670
|
+
# Prompt for value (masked input)
|
|
671
|
+
$value = Read-Host -AsSecureString "Enter value for $secret"
|
|
672
|
+
$plainValue = [Runtime.InteropServices.Marshal]::PtrToStringAuto(
|
|
673
|
+
[Runtime.InteropServices.Marshal]::SecureStringToBSTR($value)
|
|
674
|
+
)
|
|
675
|
+
|
|
676
|
+
# Set secret via gh cli
|
|
677
|
+
echo $plainValue | gh secret set $secret
|
|
678
|
+
|
|
679
|
+
if ($LASTEXITCODE -eq 0) {
|
|
680
|
+
Write-Host "✅ $secret configured"
|
|
681
|
+
$secretsConfigured += $secret
|
|
682
|
+
} else {
|
|
683
|
+
Write-Host "❌ Failed to set $secret"
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
Write-Host ""
|
|
688
|
+
Write-Host "Secrets configured: $($secretsConfigured.Count)"
|
|
689
|
+
```
|
|
690
|
+
|
|
691
|
+
---
|
|
692
|
+
|
|
693
|
+
### Step 7: Generate Setup Report
|
|
694
|
+
|
|
695
|
+
**Action:** Create comprehensive setup report
|
|
696
|
+
|
|
697
|
+
```powershell
|
|
698
|
+
echo "=== Generating DevOps Setup Report ==="
|
|
699
|
+
|
|
700
|
+
$report = @"
|
|
701
|
+
# AIOS DevOps Setup Report
|
|
702
|
+
# Generated: $(Get-Date -Format "yyyy-MM-ddTHH:mm:ss")
|
|
703
|
+
|
|
704
|
+
setup:
|
|
705
|
+
completed: true
|
|
706
|
+
date: "$(Get-Date -Format "yyyy-MM-ddTHH:mm:ss")"
|
|
707
|
+
project_type: $projectType
|
|
708
|
+
story_id: "5.10"
|
|
709
|
+
|
|
710
|
+
repository:
|
|
711
|
+
url: $remoteUrl
|
|
712
|
+
owner: $repoOwner
|
|
713
|
+
name: $repoName
|
|
714
|
+
|
|
715
|
+
workflows_installed:
|
|
716
|
+
- ci.yml
|
|
717
|
+
- pr-automation.yml
|
|
718
|
+
- release.yml
|
|
719
|
+
|
|
720
|
+
coderabbit:
|
|
721
|
+
configured: true
|
|
722
|
+
profile: $reviewProfile
|
|
723
|
+
config_file: ".coderabbit.yaml"
|
|
724
|
+
github_app_url: "https://github.com/apps/coderabbitai"
|
|
725
|
+
|
|
726
|
+
branch_protection:
|
|
727
|
+
enabled: $branchProtectionEnabled
|
|
728
|
+
branch: "main"
|
|
729
|
+
required_checks:
|
|
730
|
+
- lint
|
|
731
|
+
- typecheck
|
|
732
|
+
- test
|
|
733
|
+
required_reviewers: $requiredReviewers
|
|
734
|
+
|
|
735
|
+
secrets_configured:
|
|
736
|
+
$(($secretsConfigured | ForEach-Object { " - $_" }) -join "`n")
|
|
737
|
+
|
|
738
|
+
next_steps:
|
|
739
|
+
- "Install CodeRabbit GitHub App: https://github.com/apps/coderabbitai"
|
|
740
|
+
- "Create first PR to test CI/CD"
|
|
741
|
+
- "Configure additional secrets as needed"
|
|
742
|
+
- "Review branch protection settings: Settings → Branches"
|
|
743
|
+
|
|
744
|
+
validation_checklist:
|
|
745
|
+
- "[x] GitHub Actions workflows installed"
|
|
746
|
+
- "[$(if($coderabbitConfigured){'x'}else{' '})] CodeRabbit configured"
|
|
747
|
+
- "[$(if($branchProtectionEnabled){'x'}else{' '})] Branch protection enabled"
|
|
748
|
+
- "[$(if($secretsConfigured.Count -gt 0){'x'}else{' '})] Repository secrets configured"
|
|
749
|
+
"@
|
|
750
|
+
|
|
751
|
+
# Ensure .aios directory exists
|
|
752
|
+
New-Item -ItemType Directory -Path ".aios" -Force | Out-Null
|
|
753
|
+
|
|
754
|
+
$report | Out-File -FilePath ".aios/devops-setup-report.yaml" -Encoding utf8
|
|
755
|
+
|
|
756
|
+
Write-Host "✅ Setup report saved to .aios/devops-setup-report.yaml"
|
|
757
|
+
```
|
|
758
|
+
|
|
759
|
+
---
|
|
760
|
+
|
|
761
|
+
### Step 8: Final Summary
|
|
762
|
+
|
|
763
|
+
**Action:** Display completion summary and next steps
|
|
764
|
+
|
|
765
|
+
```
|
|
766
|
+
╔═══════════════════════════════════════════════════════════════════════════╗
|
|
767
|
+
║ ✅ GITHUB DEVOPS SETUP COMPLETE ║
|
|
768
|
+
╠═══════════════════════════════════════════════════════════════════════════╣
|
|
769
|
+
║ ║
|
|
770
|
+
║ Repository: https://github.com/username/my-project ║
|
|
771
|
+
║ Project Type: node (Node.js/TypeScript) ║
|
|
772
|
+
║ ║
|
|
773
|
+
╠═══════════════════════════════════════════════════════════════════════════╣
|
|
774
|
+
║ Configuration Summary ║
|
|
775
|
+
╠═══════════════════════════════════════════════════════════════════════════╣
|
|
776
|
+
║ ║
|
|
777
|
+
║ GitHub Actions: ║
|
|
778
|
+
║ ✅ ci.yml - Lint, TypeCheck, Test ║
|
|
779
|
+
║ ✅ pr-automation.yml - Quality summary, coverage ║
|
|
780
|
+
║ ✅ release.yml - Release automation ║
|
|
781
|
+
║ ║
|
|
782
|
+
║ CodeRabbit: ║
|
|
783
|
+
║ ✅ .coderabbit.yaml created (profile: balanced) ║
|
|
784
|
+
║ ⚠️ Install GitHub App: https://github.com/apps/coderabbitai ║
|
|
785
|
+
║ ║
|
|
786
|
+
║ Branch Protection (main): ║
|
|
787
|
+
║ ✅ Required status checks: lint, typecheck, test ║
|
|
788
|
+
║ ✅ Require 1 PR review ║
|
|
789
|
+
║ ✅ Prevent force pushes ║
|
|
790
|
+
║ ║
|
|
791
|
+
║ Secrets Configured: ║
|
|
792
|
+
║ ✅ CODECOV_TOKEN ║
|
|
793
|
+
║ ⏭️ Others skipped (configure later via Settings → Secrets) ║
|
|
794
|
+
║ ║
|
|
795
|
+
╠═══════════════════════════════════════════════════════════════════════════╣
|
|
796
|
+
║ NEXT STEPS ║
|
|
797
|
+
╠═══════════════════════════════════════════════════════════════════════════╣
|
|
798
|
+
║ ║
|
|
799
|
+
║ 1. Install CodeRabbit GitHub App (required for code review): ║
|
|
800
|
+
║ https://github.com/apps/coderabbitai ║
|
|
801
|
+
║ ║
|
|
802
|
+
║ 2. Create your first PR to test the CI/CD pipeline: ║
|
|
803
|
+
║ git checkout -b feature/test-ci ║
|
|
804
|
+
║ git commit --allow-empty -m "chore: test CI pipeline" ║
|
|
805
|
+
║ git push -u origin feature/test-ci ║
|
|
806
|
+
║ gh pr create --title "Test CI Pipeline" --body "Testing CI setup" ║
|
|
807
|
+
║ ║
|
|
808
|
+
║ 3. Commit the DevOps configuration: ║
|
|
809
|
+
║ git add .github/ .coderabbit.yaml .aios/ ║
|
|
810
|
+
║ git commit -m "chore: add DevOps configuration [Story 5.10]" ║
|
|
811
|
+
║ git push ║
|
|
812
|
+
║ ║
|
|
813
|
+
║ Report saved: .aios/devops-setup-report.yaml ║
|
|
814
|
+
║ ║
|
|
815
|
+
╚═══════════════════════════════════════════════════════════════════════════╝
|
|
816
|
+
|
|
817
|
+
— Gage, DevOps configured with confidence 🚀
|
|
818
|
+
```
|
|
819
|
+
|
|
820
|
+
---
|
|
821
|
+
|
|
822
|
+
## Validation Checklist
|
|
823
|
+
|
|
824
|
+
- [ ] Pre-conditions verified (git, remote, gh auth)
|
|
825
|
+
- [ ] Project type detected
|
|
826
|
+
- [ ] GitHub Actions workflows installed
|
|
827
|
+
- [ ] CodeRabbit configuration created
|
|
828
|
+
- [ ] Branch protection configured (if supported)
|
|
829
|
+
- [ ] Secrets configured (if selected)
|
|
830
|
+
- [ ] Setup report generated
|
|
831
|
+
- [ ] Next steps presented to user
|
|
832
|
+
|
|
833
|
+
---
|
|
834
|
+
|
|
835
|
+
## Troubleshooting
|
|
836
|
+
|
|
837
|
+
### Issue 1: Branch protection API returns 403
|
|
838
|
+
|
|
839
|
+
**Error:** `Resource not accessible by personal access token`
|
|
840
|
+
|
|
841
|
+
**Fix:**
|
|
842
|
+
1. For private repos on free tier, branch protection requires GitHub Pro
|
|
843
|
+
2. Re-authenticate with correct scopes: `gh auth login --scopes repo,admin:repo_hook`
|
|
844
|
+
3. Manual setup via GitHub UI: Settings → Branches
|
|
845
|
+
|
|
846
|
+
### Issue 2: Workflow validation fails
|
|
847
|
+
|
|
848
|
+
**Error:** `Invalid workflow file`
|
|
849
|
+
|
|
850
|
+
**Fix:**
|
|
851
|
+
1. Validate YAML syntax: `yamllint .github/workflows/ci.yml`
|
|
852
|
+
2. Check for tab characters (use spaces only)
|
|
853
|
+
3. Verify action versions are valid
|
|
854
|
+
|
|
855
|
+
### Issue 3: CodeRabbit not reviewing PRs
|
|
856
|
+
|
|
857
|
+
**Fix:**
|
|
858
|
+
1. Verify GitHub App is installed: https://github.com/apps/coderabbitai
|
|
859
|
+
2. Check app has access to the repository
|
|
860
|
+
3. Verify .coderabbit.yaml is in the default branch
|
|
861
|
+
|
|
862
|
+
---
|
|
863
|
+
|
|
864
|
+
## References
|
|
865
|
+
|
|
866
|
+
- [GitHub Actions Documentation](https://docs.github.com/en/actions)
|
|
867
|
+
- [GitHub Branch Protection API](https://docs.github.com/en/rest/branches/branch-protection)
|
|
868
|
+
- [CodeRabbit Documentation](https://docs.coderabbit.ai/)
|
|
869
|
+
- [Story 5.10 - GitHub DevOps Setup](docs/stories/v2.1/sprint-5/story-5.10-github-devops-user-projects.md)
|
|
870
|
+
|
|
871
|
+
---
|
|
872
|
+
|
|
873
|
+
**Status:** ✅ Production Ready
|
|
874
|
+
**Tested On:** Windows 11, macOS Sonoma, Ubuntu 22.04
|