@guanlin4924/devflow-pi 0.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/README.md +164 -0
- package/docs/OMP-NATIVE-ARCHITECTURE.md +104 -0
- package/package.json +40 -0
- package/plugins/devflow-core/extensions/devflow-core.ts +1642 -0
- package/plugins/devflow-core/package.json +14 -0
- package/plugins/devflow-core/runtime/hooks/context_sync_gate.py +174 -0
- package/plugins/devflow-core/runtime/hooks/hook_common.py +696 -0
- package/plugins/devflow-core/runtime/hooks/index_gate.py +63 -0
- package/plugins/devflow-core/runtime/hooks/injection_code_specification.py +7 -0
- package/plugins/devflow-core/runtime/hooks/post_tool.py +44 -0
- package/plugins/devflow-core/runtime/hooks/start.py +288 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/SKILL.md +265 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/agents/openai.yaml +4 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/advance_state.rb +520 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/control_io.rb +42 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/init_state.rb +138 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/init_workflow.rb +121 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/inspect_state.rb +553 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/manage_lessons.rb +219 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/sync_artifacts.rb +168 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/update_triage_route.rb +110 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/validate_state.rb +565 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/templates/feature-development.yaml +783 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/templates/uat-remediation.yaml +143 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/templates/workflows-README.md +10 -0
- package/plugins/devflow-core/skills/workflow-pipeline/SKILL.md +117 -0
- package/plugins/devflow-core/skills/workflow-pipeline/references/pipeline-flow.md +167 -0
- package/plugins/devflow-core/skills/workflow-pipeline/references/slice-safety-guide.md +125 -0
- package/plugins/devflow-core/skills/workflow-project-context/SKILL.md +819 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/agents-md-template.md +25 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/codebase-backend-spec-template.md +68 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/codebase-frontend-spec-template.md +64 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/codebase-navigation-template.md +168 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/context-domain-index-template.md +43 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/context-spec-index-template.md +45 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/execution-contract-template.md +57 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/navigation-index-template.md +40 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/project-initialization-template.md +109 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/rules-index-template.md +80 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/run-manifest-template.json +40 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/directory-structure.md +46 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/engine.md +46 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/errors.md +46 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/locator.md +46 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/model.md +46 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/repository.md +46 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/router.md +46 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/scheduler.md +46 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/schema.md +46 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/service.md +46 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/testing.md +46 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/frontend/api-client.md +46 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/frontend/case-editor.md +46 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/frontend/components.md +46 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/frontend/directory-structure.md +46 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/frontend/forms.md +46 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/frontend/routing.md +46 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/frontend/state.md +46 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/frontend/testing.md +46 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/stack-spec-template.md +106 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/state-template.md +77 -0
- package/plugins/devflow-core/skills/workflow-project-context/assets/toolchain-template.md +37 -0
- package/plugins/devflow-core/skills/workflow-project-context/references/navigation-guide.md +262 -0
- package/plugins/devflow-core/skills/workflow-project-context/scripts/validate_initialization.py +545 -0
- package/plugins/devflow-design/agents/contract-auditor.md +18 -0
- package/plugins/devflow-design/extensions/devflow-design.ts +47 -0
- package/plugins/devflow-design/package.json +14 -0
- package/plugins/devflow-design/skills/workflow-api-call-guide/SKILL.md +142 -0
- package/plugins/devflow-design/skills/workflow-api-contract/SKILL.md +150 -0
- package/plugins/devflow-design/skills/workflow-api-supplement/SKILL.md +121 -0
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/SKILL.md +257 -0
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/assets/adr-template.md +57 -0
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/assets/backend-spec-template.md +205 -0
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/references/affected-module-exploration.md +59 -0
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/references/backend-conventions.md +30 -0
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/references/code-explore-guide.md +40 -0
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/references/project-rule-contract.md +66 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/SKILL.md +91 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/index.md +71 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/accessibility.md +31 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/component-library.md +31 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/design-systems.md +47 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/responsive-grid.md +29 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/stack-guidelines.md +31 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/ux-patterns.md +40 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tokens/project-tokens.md +19 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/SKILL.md +377 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/charts.csv +26 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/colors.csv +97 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/icons.csv +101 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/landing.csv +31 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/products.csv +97 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/styles.csv +68 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/typography.csv +58 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/scripts/core.py +253 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/scripts/search.py +114 -0
- package/plugins/devflow-design/skills/workflow-design-rule-pack/scripts/install.py +67 -0
- package/plugins/devflow-design/skills/workflow-feature-breakdown/SKILL.md +370 -0
- package/plugins/devflow-design/skills/workflow-feature-breakdown/assets/admin-system-template.md +57 -0
- package/plugins/devflow-design/skills/workflow-feature-breakdown/assets/api-service-template.md +42 -0
- package/plugins/devflow-design/skills/workflow-feature-breakdown/assets/c-end-system-template.md +25 -0
- package/plugins/devflow-design/skills/workflow-feature-breakdown/assets/output-template.md +139 -0
- package/plugins/devflow-design/skills/workflow-feature-breakdown/references/bug-rules.md +12 -0
- package/plugins/devflow-design/skills/workflow-feature-breakdown/references/exception-checklist.md +31 -0
- package/plugins/devflow-design/skills/workflow-feature-breakdown/references/trace-integrity-guide.md +153 -0
- package/plugins/devflow-design/skills/workflow-feature-breakdown/references/writing-guide.md +92 -0
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/SKILL.md +223 -0
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/assets/frontend-spec-template.md +204 -0
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/affected-module-exploration.md +58 -0
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/component-patterns.md +42 -0
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/frontend-conventions.md +28 -0
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/frontend-stack-slots/common-web.md +53 -0
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/frontend-stack-slots/next.md +40 -0
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/frontend-stack-slots/react.md +41 -0
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/frontend-stack-slots/vue.md +41 -0
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/project-rule-contract.md +95 -0
- package/plugins/devflow-design/skills/workflow-integration-verify/SKILL.md +172 -0
- package/plugins/devflow-design/skills/workflow-ui-spec/SKILL.md +302 -0
- package/plugins/devflow-design/skills/workflow-ui-spec/assets/ui-spec-template.md +244 -0
- package/plugins/devflow-design/skills/workflow-ui-spec/references/affected-module-exploration.md +55 -0
- package/plugins/devflow-implementation/agents/implementation-worker.md +20 -0
- package/plugins/devflow-implementation/package.json +6 -0
- package/plugins/devflow-implementation/skills/workflow-bug-fix/SKILL.md +124 -0
- package/plugins/devflow-implementation/skills/workflow-bug-fix/references/INDEX.md +13 -0
- package/plugins/devflow-implementation/skills/workflow-bug-fix/references/adversarial-review.md +35 -0
- package/plugins/devflow-implementation/skills/workflow-bug-fix/references/first-principles.md +26 -0
- package/plugins/devflow-implementation/skills/workflow-bug-fix/references/lesson-format.md +28 -0
- package/plugins/devflow-implementation/skills/workflow-bug-fix/references/root-cause-ladder.md +51 -0
- package/plugins/devflow-implementation/skills/workflow-bug-fix/references/seam-analysis.md +30 -0
- package/plugins/devflow-implementation/skills/workflow-change-plan/SKILL.md +160 -0
- package/plugins/devflow-implementation/skills/workflow-change-plan/references/code-conventions.md +33 -0
- package/plugins/devflow-implementation/skills/workflow-change-plan/references/ddl-guidelines.md +60 -0
- package/plugins/devflow-implementation/skills/workflow-change-plan/references/output-template.md +217 -0
- package/plugins/devflow-implementation/skills/workflow-change-plan/references/project-rule-contract.md +55 -0
- package/plugins/devflow-implementation/skills/workflow-execute-phase/SKILL.md +271 -0
- package/plugins/devflow-implementation/skills/workflow-execute-phase/references/execute-phase.md +1251 -0
- package/plugins/devflow-implementation/skills/workflow-execute-phase/references/ui-brand.md +160 -0
- package/plugins/devflow-intel/agents/project-scout.md +27 -0
- package/plugins/devflow-intel/extensions/devflow-intel.ts +104 -0
- package/plugins/devflow-intel/package.json +14 -0
- package/plugins/devflow-intel/skills/code-index-query/SKILL.md +37 -0
- package/plugins/devflow-intel/skills/code-index-query/references/query-patterns.md +27 -0
- package/plugins/devflow-intel/skills/workflow-code-index/SKILL.md +68 -0
- package/plugins/devflow-intel/skills/workflow-code-index/references/adapter-contract.md +38 -0
- package/plugins/devflow-intel/skills/workflow-code-index/references/audit-checklist.md +10 -0
- package/plugins/devflow-intel/skills/workflow-code-index/references/confidence-rules.md +43 -0
- package/plugins/devflow-intel/skills/workflow-code-index/references/data-model.md +74 -0
- package/plugins/devflow-intel/skills/workflow-code-index/references/discovery.md +24 -0
- package/plugins/devflow-intel/skills/workflow-code-index/references/query-guide.md +20 -0
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/__init__.py +1 -0
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/base.py +30 -0
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/generic_text.py +287 -0
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/registry.py +17 -0
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/code_index.py +437 -0
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/core/__init__.py +1 -0
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/core/discovery.py +139 -0
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/core/hashing.py +11 -0
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/core/scanner.py +115 -0
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/core/schema.py +123 -0
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/validators/__init__.py +1 -0
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/validators/project_binding_check.py +66 -0
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/validators/relation_check.py +36 -0
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/validators/schema_validate.py +11 -0
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/validators/stale_check.py +42 -0
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/writers/__init__.py +1 -0
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/writers/jsonl_writer.py +25 -0
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/writers/markdown_writer.py +106 -0
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/writers/sqlite_writer.py +143 -0
- package/plugins/devflow-intel/skills/workflow-context-sync/SKILL.md +381 -0
- package/plugins/devflow-intel/skills/workflow-context-sync/agents/openai.yaml +4 -0
- package/plugins/devflow-intel/skills/workflow-context-sync/scripts/context_sync_cursor.py +241 -0
- package/plugins/devflow-intel/skills/workflow-update-navigation/SKILL.md +186 -0
- package/plugins/devflow-intel/skills/workflow-update-navigation/references/incremental-update-guide.md +47 -0
- package/plugins/devflow-quality/agents/code-reviewer.md +18 -0
- package/plugins/devflow-quality/agents/verification-runner.md +21 -0
- package/plugins/devflow-quality/extensions/devflow-quality.ts +59 -0
- package/plugins/devflow-quality/package.json +14 -0
- package/plugins/devflow-quality/skills/code-review/SKILL.md +288 -0
- package/plugins/devflow-quality/skills/code-review/references/cross-layer-checklist.md +70 -0
- package/plugins/devflow-quality/skills/code-review/references/dao-checklist.md +70 -0
- package/plugins/devflow-quality/skills/code-review/references/handler-checklist.md +48 -0
- package/plugins/devflow-quality/skills/code-review/references/repository-checklist.md +44 -0
- package/plugins/devflow-quality/skills/code-review/references/service-checklist.md +57 -0
- package/plugins/devflow-quality/skills/code-review/references/spec-checklist.md +34 -0
- package/plugins/devflow-quality/skills/code-review/references/vo-checklist.md +26 -0
- package/plugins/devflow-quality/skills/workflow-audit-milestone/SKILL.md +31 -0
- package/plugins/devflow-quality/skills/workflow-audit-milestone/references/audit-milestone.md +328 -0
- package/plugins/devflow-quality/skills/workflow-complete-milestone/SKILL.md +132 -0
- package/plugins/devflow-quality/skills/workflow-complete-milestone/assets/milestone-archive.md +123 -0
- package/plugins/devflow-quality/skills/workflow-complete-milestone/references/complete-milestone.md +775 -0
- package/plugins/devflow-quality/skills/workflow-complete-milestone/references/milestone-archive.md +123 -0
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/SKILL.md +126 -0
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/api-mainflow-rules.md +27 -0
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/codebase-discovery.md +54 -0
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/intermediate-format.md +244 -0
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/mainflow-selection.md +36 -0
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/project-dsl-contract.md +190 -0
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/ui-mainflow-rules.md +110 -0
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/compile_dsl.py +583 -0
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/discover_codebases.py +199 -0
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/normalize_case_payloads.py +177 -0
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/validate_case_payloads.py +370 -0
- package/plugins/devflow-quality/skills/workflow-verify-work/SKILL.md +106 -0
- package/plugins/devflow-quality/skills/workflow-verify-work/assets/UAT.md +265 -0
- package/plugins/devflow-quality/skills/workflow-verify-work/references/verify-work.md +759 -0
- package/plugins/devflow-requirements/agents/requirements-auditor.md +20 -0
- package/plugins/devflow-requirements/package.json +6 -0
- package/plugins/devflow-requirements/skills/requirement-feasibility-review/SKILL.md +219 -0
- package/plugins/devflow-requirements/skills/requirement-feasibility-review/agents/openai.yaml +4 -0
- package/plugins/devflow-requirements/skills/requirement-feasibility-review/references/review-method.md +257 -0
- package/plugins/devflow-requirements/skills/requirement-feasibility-review/references/review-template.md +80 -0
- package/plugins/devflow-requirements/skills/workflow-demand-clarify/SKILL.md +325 -0
- package/plugins/devflow-requirements/skills/workflow-domain-modeling/SKILL.md +163 -0
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/SKILL.md +748 -0
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/assets/baseline-template.md +281 -0
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/antipatterns.md +69 -0
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/challenge-review-guide.md +158 -0
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/decomposition-guide.md +115 -0
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/project-context-guide.md +119 -0
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/questioning.md +76 -0
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/requirement-review-checklist.md +115 -0
- package/plugins/devflow-requirements/skills/workflow-requirement-triage/SKILL.md +204 -0
- package/plugins/devflow-requirements/skills/workflow-wayfinder/SKILL.md +183 -0
- package/src/cli.ts +76 -0
- package/src/constants.ts +15 -0
- package/src/doctor.ts +66 -0
- package/src/paths.ts +37 -0
- package/src/platform-extension.ts +46 -0
- package/src/project-context.ts +165 -0
- package/src/runtime.ts +167 -0
- package/src/usage-stats.ts +101 -0
- package/templates/commands/start.md +58 -0
- package/templates/omp/AGENTS.md +36 -0
- package/templates/omp/config.yml +112 -0
- package/templates/omp/hook-config.json +18 -0
- package/templates/omp/index-policy.json +57 -0
package/src/runtime.ts
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { mkdir } from "node:fs/promises";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
|
|
5
|
+
import { OMP_RUNTIME_VERSION, PRODUCT_NAME, PRODUCT_VERSION } from "./constants.ts";
|
|
6
|
+
import { createPlatformExtension } from "./platform-extension.ts";
|
|
7
|
+
import { devflowAgentDir, devflowHome, pluginRoots, projectSessionDir, sharedOmpAgentDir } from "./paths.ts";
|
|
8
|
+
import type { ProjectContext } from "./project-context.ts";
|
|
9
|
+
|
|
10
|
+
export interface RuntimeOptions {
|
|
11
|
+
initialPrompt?: string;
|
|
12
|
+
originalOmpAgentDir?: string;
|
|
13
|
+
resume?: boolean | string;
|
|
14
|
+
hasUI?: boolean;
|
|
15
|
+
enableMCP?: boolean;
|
|
16
|
+
enableLsp?: boolean;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const MANAGED_SETTINGS: Record<string, unknown> = {
|
|
20
|
+
modelRoleStorage: "user",
|
|
21
|
+
disabledProviders: ["claude", "codex", "cursor", "gemini", "github", "opencode"],
|
|
22
|
+
"skills.enabled": true,
|
|
23
|
+
"skills.enableSkillCommands": true,
|
|
24
|
+
"skills.enableClaudeUser": false,
|
|
25
|
+
"skills.enableClaudeProject": false,
|
|
26
|
+
"skills.enableCodexUser": false,
|
|
27
|
+
"skills.enablePiUser": false,
|
|
28
|
+
"skills.enablePiProject": false,
|
|
29
|
+
"skills.enableAgentsUser": false,
|
|
30
|
+
"skills.enableAgentsProject": false,
|
|
31
|
+
// The interactive session is the high-capability Planner. Low-cost agents
|
|
32
|
+
// are dispatched only through explicit Devflow steps, one at a time by
|
|
33
|
+
// default, so background work cannot silently widen a user's request.
|
|
34
|
+
"modelRoles.default": "@slow",
|
|
35
|
+
"task.batch": false,
|
|
36
|
+
"task.maxConcurrency": 1,
|
|
37
|
+
"task.maxRecursionDepth": 1,
|
|
38
|
+
"task.enableLsp": true,
|
|
39
|
+
"task.agentModelOverrides": {
|
|
40
|
+
"project-scout": "@smol",
|
|
41
|
+
"requirements-auditor": "@slow",
|
|
42
|
+
"contract-auditor": "@slow",
|
|
43
|
+
"implementation-worker": "@task",
|
|
44
|
+
"devflow-code-reviewer": "@slow",
|
|
45
|
+
"verification-runner": "@task",
|
|
46
|
+
},
|
|
47
|
+
"task.isolation.mode": "auto",
|
|
48
|
+
"task.isolation.apply": false,
|
|
49
|
+
"lsp.enabled": true,
|
|
50
|
+
"lsp.lazy": true,
|
|
51
|
+
"lsp.diagnosticsOnWrite": true,
|
|
52
|
+
"tools.approvalMode": "write",
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export async function createEmbeddedRuntime(project: ProjectContext, options: RuntimeOptions = {}) {
|
|
56
|
+
const productAgentDir = devflowAgentDir();
|
|
57
|
+
const productHome = devflowHome();
|
|
58
|
+
const sharedAgentDir = sharedOmpAgentDir(options.originalOmpAgentDir);
|
|
59
|
+
const sessionDir = projectSessionDir(project.manifest.projectId);
|
|
60
|
+
// OMP's logger uses its state root rather than PI_CODING_AGENT_DIR. Keep
|
|
61
|
+
// embedded Devflow logs private as well, including in sandboxed test runs.
|
|
62
|
+
await Promise.all([
|
|
63
|
+
mkdir(productAgentDir, { recursive: true }),
|
|
64
|
+
mkdir(sessionDir, { recursive: true }),
|
|
65
|
+
mkdir(path.join(productHome, "omp"), { recursive: true }),
|
|
66
|
+
mkdir(path.join(productHome, "logs"), { recursive: true }),
|
|
67
|
+
]);
|
|
68
|
+
|
|
69
|
+
process.env.PI_CODING_AGENT_DIR = productAgentDir;
|
|
70
|
+
process.env.XDG_STATE_HOME = productHome;
|
|
71
|
+
process.env.DEVFLOW_RUNTIME_MODE = "embedded";
|
|
72
|
+
process.env.DEVFLOW_PROJECT_ROOT = project.root;
|
|
73
|
+
process.env.DEVFLOW_PLUGIN_ROOT = path.join(path.dirname(pluginRoots()[0]), "");
|
|
74
|
+
process.env.DEVFLOW_SESSION_ROOT = sessionDir;
|
|
75
|
+
|
|
76
|
+
// Configure logging before importing the OMP SDK. The SDK's default is
|
|
77
|
+
// ~/.omp/logs, which would break the product/session isolation boundary.
|
|
78
|
+
const utils = await import("@oh-my-pi/pi-utils");
|
|
79
|
+
utils.logger.setTransports({ file: path.join(productHome, "logs") });
|
|
80
|
+
const omp = await import("@oh-my-pi/pi-coding-agent");
|
|
81
|
+
const roots = pluginRoots();
|
|
82
|
+
const configFiles = [path.join(sharedAgentDir, "config.yml"), path.join(sharedAgentDir, "config.yaml")].filter(
|
|
83
|
+
candidate => existsSync(candidate),
|
|
84
|
+
);
|
|
85
|
+
const settings = await omp.Settings.init({
|
|
86
|
+
cwd: project.root,
|
|
87
|
+
agentDir: productAgentDir,
|
|
88
|
+
configFiles,
|
|
89
|
+
overrides: {
|
|
90
|
+
...MANAGED_SETTINGS,
|
|
91
|
+
// OMP 17.2.7 classifies extension-package skills behind the generic
|
|
92
|
+
// third-party toggle. Explicit custom roots keep ambient providers off
|
|
93
|
+
// while guaranteeing the packaged Devflow skills are present.
|
|
94
|
+
"skills.customDirectories": roots.map(root => path.join(root, "skills")),
|
|
95
|
+
} as never,
|
|
96
|
+
});
|
|
97
|
+
const authStorage = await omp.discoverAuthStorage(sharedAgentDir);
|
|
98
|
+
const modelRegistry = new omp.ModelRegistry(authStorage, path.join(sharedAgentDir, "models.yml"));
|
|
99
|
+
modelRegistry.refreshInBackground();
|
|
100
|
+
let sessionManager;
|
|
101
|
+
if (typeof options.resume === "string") {
|
|
102
|
+
const sessions = await omp.SessionManager.list(project.root, sessionDir);
|
|
103
|
+
const exact = sessions.find(session => session.id === options.resume);
|
|
104
|
+
const candidates = exact ? [exact] : sessions.filter(session => session.id.startsWith(options.resume as string));
|
|
105
|
+
if (candidates.length === 0) throw new Error(`Devflow session not found in this project: ${options.resume}`);
|
|
106
|
+
if (candidates.length > 1) throw new Error(`Devflow session id is ambiguous in this project: ${options.resume}`);
|
|
107
|
+
const matched = candidates[0];
|
|
108
|
+
sessionManager = await omp.SessionManager.open(matched.path, sessionDir);
|
|
109
|
+
} else if (options.resume) {
|
|
110
|
+
sessionManager = await omp.SessionManager.continueRecent(project.root, sessionDir);
|
|
111
|
+
} else {
|
|
112
|
+
sessionManager = omp.SessionManager.create(project.root, sessionDir);
|
|
113
|
+
}
|
|
114
|
+
const runtime = await omp.createAgentSession({
|
|
115
|
+
cwd: project.root,
|
|
116
|
+
agentDir: productAgentDir,
|
|
117
|
+
settings,
|
|
118
|
+
authStorage,
|
|
119
|
+
modelRegistry,
|
|
120
|
+
sessionManager,
|
|
121
|
+
additionalExtensionPaths: roots,
|
|
122
|
+
disableExtensionDiscovery: true,
|
|
123
|
+
extensions: [
|
|
124
|
+
createPlatformExtension({
|
|
125
|
+
sessionRoot: sessionDir,
|
|
126
|
+
projectId: project.manifest.projectId,
|
|
127
|
+
}),
|
|
128
|
+
],
|
|
129
|
+
hasUI: options.hasUI ?? true,
|
|
130
|
+
enableMCP: options.enableMCP ?? false,
|
|
131
|
+
enableLsp: options.enableLsp ?? true,
|
|
132
|
+
});
|
|
133
|
+
return { omp, runtime, sessionDir };
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export async function runInteractiveRuntime(project: ProjectContext, options: RuntimeOptions = {}): Promise<void> {
|
|
137
|
+
const { omp, runtime } = await createEmbeddedRuntime(project, {
|
|
138
|
+
...options,
|
|
139
|
+
hasUI: true,
|
|
140
|
+
});
|
|
141
|
+
const { initTheme } = await import("@oh-my-pi/pi-coding-agent/modes/theme/theme");
|
|
142
|
+
await initTheme(
|
|
143
|
+
true,
|
|
144
|
+
runtime.session.settings.get("symbolPreset"),
|
|
145
|
+
runtime.session.settings.get("colorBlindMode"),
|
|
146
|
+
runtime.session.settings.get("theme.dark"),
|
|
147
|
+
runtime.session.settings.get("theme.light"),
|
|
148
|
+
);
|
|
149
|
+
const mode = new omp.InteractiveMode(
|
|
150
|
+
runtime.session,
|
|
151
|
+
`${OMP_RUNTIME_VERSION} · ${PRODUCT_NAME} ${PRODUCT_VERSION}`,
|
|
152
|
+
undefined,
|
|
153
|
+
runtime.setToolUIContext,
|
|
154
|
+
runtime.lspServers,
|
|
155
|
+
runtime.mcpManager,
|
|
156
|
+
runtime.eventBus,
|
|
157
|
+
);
|
|
158
|
+
await mode.init({ clearInitialTerminalHistory: true });
|
|
159
|
+
mode.renderInitialMessages({ preserveExistingChat: true, clearTerminalHistory: true });
|
|
160
|
+
mode.showStatus(`Devflow project ${project.manifest.name} · ${project.manifest.projectId.slice(0, 8)}`);
|
|
161
|
+
if (runtime.modelFallbackMessage) mode.showWarning(runtime.modelFallbackMessage);
|
|
162
|
+
if (options.initialPrompt) await runtime.session.prompt(options.initialPrompt);
|
|
163
|
+
while (true) {
|
|
164
|
+
const input = await mode.getUserInput();
|
|
165
|
+
await omp.submitInteractiveInput(mode, runtime.session, input);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { readdir, readFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
|
|
4
|
+
export interface UsageTotals {
|
|
5
|
+
input: number;
|
|
6
|
+
output: number;
|
|
7
|
+
cacheRead: number;
|
|
8
|
+
cacheWrite: number;
|
|
9
|
+
totalTokens: number;
|
|
10
|
+
cost: number;
|
|
11
|
+
assistantMessages: number;
|
|
12
|
+
sessionFiles: number;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function emptyUsage(): UsageTotals {
|
|
16
|
+
return {
|
|
17
|
+
input: 0,
|
|
18
|
+
output: 0,
|
|
19
|
+
cacheRead: 0,
|
|
20
|
+
cacheWrite: 0,
|
|
21
|
+
totalTokens: 0,
|
|
22
|
+
cost: 0,
|
|
23
|
+
assistantMessages: 0,
|
|
24
|
+
sessionFiles: 0,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function finiteNumber(value: unknown): number {
|
|
29
|
+
return typeof value === "number" && Number.isFinite(value) ? value : 0;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function includeTimestamp(timestamp: unknown, from?: string, to?: string): boolean {
|
|
33
|
+
if (!from && !to) return true;
|
|
34
|
+
if (typeof timestamp !== "string") return false;
|
|
35
|
+
const value = Date.parse(timestamp);
|
|
36
|
+
if (!Number.isFinite(value)) return false;
|
|
37
|
+
if (from && value < Date.parse(`${from}T00:00:00.000Z`)) return false;
|
|
38
|
+
if (to && value > Date.parse(`${to}T23:59:59.999Z`)) return false;
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
async function jsonlFiles(root: string): Promise<string[]> {
|
|
43
|
+
const entries = await readdir(root, { withFileTypes: true }).catch(() => []);
|
|
44
|
+
const nested = await Promise.all(
|
|
45
|
+
entries.map(async entry => {
|
|
46
|
+
const target = path.join(root, entry.name);
|
|
47
|
+
if (entry.isDirectory()) return jsonlFiles(target);
|
|
48
|
+
return entry.isFile() && entry.name.endsWith(".jsonl") ? [target] : [];
|
|
49
|
+
}),
|
|
50
|
+
);
|
|
51
|
+
return nested.flat();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export async function aggregateUsage(
|
|
55
|
+
sessionRoot: string,
|
|
56
|
+
range: { from?: string; to?: string } = {},
|
|
57
|
+
): Promise<UsageTotals> {
|
|
58
|
+
const totals = emptyUsage();
|
|
59
|
+
const files = await jsonlFiles(sessionRoot);
|
|
60
|
+
totals.sessionFiles = files.length;
|
|
61
|
+
for (const file of files) {
|
|
62
|
+
const content = await readFile(file, "utf8").catch(() => "");
|
|
63
|
+
for (const line of content.split("\n")) {
|
|
64
|
+
if (!line.trim()) continue;
|
|
65
|
+
let entry: Record<string, unknown>;
|
|
66
|
+
try {
|
|
67
|
+
entry = JSON.parse(line) as Record<string, unknown>;
|
|
68
|
+
} catch {
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (entry.type !== "message" || !includeTimestamp(entry.timestamp, range.from, range.to)) continue;
|
|
72
|
+
const message = entry.message as Record<string, unknown> | undefined;
|
|
73
|
+
if (message?.role !== "assistant") continue;
|
|
74
|
+
const usage = message.usage as Record<string, unknown> | undefined;
|
|
75
|
+
if (!usage) continue;
|
|
76
|
+
const cost = usage.cost as Record<string, unknown> | undefined;
|
|
77
|
+
totals.input += finiteNumber(usage.input);
|
|
78
|
+
totals.output += finiteNumber(usage.output);
|
|
79
|
+
totals.cacheRead += finiteNumber(usage.cacheRead);
|
|
80
|
+
totals.cacheWrite += finiteNumber(usage.cacheWrite);
|
|
81
|
+
totals.totalTokens += finiteNumber(usage.totalTokens);
|
|
82
|
+
totals.cost += finiteNumber(cost?.total);
|
|
83
|
+
totals.assistantMessages += 1;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return totals;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export function renderUsage(totals: UsageTotals): string {
|
|
90
|
+
return [
|
|
91
|
+
"Devflow usage",
|
|
92
|
+
`sessions: ${totals.sessionFiles}`,
|
|
93
|
+
`assistant messages: ${totals.assistantMessages}`,
|
|
94
|
+
`input: ${totals.input}`,
|
|
95
|
+
`output: ${totals.output}`,
|
|
96
|
+
`cache read: ${totals.cacheRead}`,
|
|
97
|
+
`cache write: ${totals.cacheWrite}`,
|
|
98
|
+
`total tokens: ${totals.totalTokens}`,
|
|
99
|
+
`cost: $${totals.cost.toFixed(6)}`,
|
|
100
|
+
].join("\n");
|
|
101
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# 研发会话初始化
|
|
2
|
+
|
|
3
|
+
当 `<workflow>`、`<index-entrypoints>` 和 `<pipeline-state>` 已由 SessionStart hook 注入时,按以下指令执行。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 初始化行为
|
|
8
|
+
|
|
9
|
+
### 1. 如果有 `<intent>` 块(跨 /clear 意图)
|
|
10
|
+
|
|
11
|
+
根据 intent 中的 action 执行:
|
|
12
|
+
|
|
13
|
+
- **`"action": "continue"`** → 直接按 `<workflow>` 从 `<pipeline-state>` 的当前步骤继续,**不要问用户**。简短告知后将下一步的 skill 调起来。
|
|
14
|
+
- **`"action": "skill", "skill": "workflow-xxx", "args": "..."`** → 直接调用该 skill,**不要问用户**。
|
|
15
|
+
|
|
16
|
+
### 2. 如果没有 `<intent>` 块(正常启动或手动 /clear)
|
|
17
|
+
|
|
18
|
+
汇报当前流水线状态(基于 `<pipeline-state>`):
|
|
19
|
+
- 已完成步骤和产物
|
|
20
|
+
- 当前卡在哪一步
|
|
21
|
+
- 推荐下一步操作
|
|
22
|
+
|
|
23
|
+
检查 git 状态:
|
|
24
|
+
- 当前分支
|
|
25
|
+
- 最近 3 条提交
|
|
26
|
+
- 是否有未提交的变更
|
|
27
|
+
|
|
28
|
+
询问用户:
|
|
29
|
+
|
|
30
|
+
> **接下来做什么?**
|
|
31
|
+
>
|
|
32
|
+
> - 继续当前功能(继续推荐下一步)
|
|
33
|
+
> - 开始新功能:提供功能名 + 需求描述
|
|
34
|
+
> - 其他操作
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 跨步骤上下文管理
|
|
39
|
+
|
|
40
|
+
**关键约定**:当用户要求进入下一个 workflow 步骤时(说"继续"、"下一步"、或直接调用 workflow skill),在执行新 skill 之前先做两件事:
|
|
41
|
+
|
|
42
|
+
1. 写入 `.planning/.next-intent`:
|
|
43
|
+
- 继续下一步:`{"action": "continue"}`
|
|
44
|
+
- 调用指定 skill:`{"action": "skill", "skill": "workflow-verify-work", "args": "..."}`
|
|
45
|
+
2. 执行 `/clear`
|
|
46
|
+
|
|
47
|
+
`/clear` 后 SessionStart hook 重新注入上下文,`<intent>` 块会告知此会话的意图,无需再问用户即可直接进入下一步。
|
|
48
|
+
|
|
49
|
+
**重要**:只在需要切换 workflow 步骤时才做这个流程。用户中间的提问、讨论、代码审查等正常对话不要 `/clear`。
|
|
50
|
+
|
|
51
|
+
## 执行中的行为准则
|
|
52
|
+
|
|
53
|
+
- workflow skill 使用 `skill://<name>` 按需读取(如 `skill://workflow-verify-work`)。
|
|
54
|
+
- 上下文管理:你觉得需要时就 `/clear`,不要等 compaction。`/clear` 后 hook 会自动恢复 pipeline 状态和索引入口。
|
|
55
|
+
- 优先读取最新的规则、规范和导航索引;索引缺失或过期时回退到 LSP、搜索和源码事实,并显式报告降级状态
|
|
56
|
+
- 读 `.context/lessons/README.md`,避免已知陷阱
|
|
57
|
+
- 每个步骤完成后更新 `.planning/STATE.md`
|
|
58
|
+
- 遇到不确定的情况,在 `.context/lessons/` 中记录
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Devflow Project Agent
|
|
2
|
+
|
|
3
|
+
This repository uses an OMP-native, project-scoped software delivery runtime.
|
|
4
|
+
|
|
5
|
+
## Control plane
|
|
6
|
+
|
|
7
|
+
- Start only through `/devflow start <feature>|<phase>` after `/devflow doctor` passes; resume with `/devflow resume`.
|
|
8
|
+
- Inspect workflow state with `devflow_state`; do not infer state from chat history.
|
|
9
|
+
- Initialize delivery with `devflow_bootstrap`.
|
|
10
|
+
- Mutate checkpoints and steps only with `devflow_transition`.
|
|
11
|
+
- Never directly edit `.planning/STATE.md`, `.planning/.next-intent`, `.planning/workflows/`, or `.planning/artifacts/index.yaml`.
|
|
12
|
+
- The parent session is the only workflow-state writer. Task agents return evidence or patches and never advance state.
|
|
13
|
+
|
|
14
|
+
## Evidence order
|
|
15
|
+
|
|
16
|
+
1. Read the smallest relevant project index when it exists and is current.
|
|
17
|
+
2. Verify material claims with LSP, targeted search, tests, and source code.
|
|
18
|
+
3. If an index is absent or stale, continue from source-of-truth evidence and explicitly report degraded index coverage.
|
|
19
|
+
|
|
20
|
+
An index accelerates discovery; it never overrides source code, executable tests, or an approved contract.
|
|
21
|
+
|
|
22
|
+
## Skills and roles
|
|
23
|
+
|
|
24
|
+
- Load skills on demand with `skill://<name>`; do not preload the entire library.
|
|
25
|
+
- Use `project-scout` for read-only repository exploration.
|
|
26
|
+
- Use `requirements-auditor` and `contract-auditor` as adversarial reviewers, not decision authorities.
|
|
27
|
+
- Use `implementation-worker` only for an approved bounded plan and in task isolation.
|
|
28
|
+
- Use `devflow-code-reviewer` and `verification-runner` independently from implementation.
|
|
29
|
+
- Do not silently inherit the parent model for task agents. `@smol`, `@task`, and `@slow` must resolve to distinct project models before automatic delivery starts.
|
|
30
|
+
|
|
31
|
+
## Completion
|
|
32
|
+
|
|
33
|
+
- A model assertion is not validation evidence.
|
|
34
|
+
- Record exact commands and results for tests, builds, migrations, and acceptance checks.
|
|
35
|
+
- When context reconciliation is requested, follow `skill://workflow-context-sync`, validate the required level, then acknowledge through `devflow_context_sync`.
|
|
36
|
+
- Human checkpoints never pass silently in headless mode.
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Devflow owns this project-local OMP profile. Model ids stay in the user's
|
|
2
|
+
# global config; only role storage and development policy are project-scoped.
|
|
3
|
+
modelRoleStorage: project
|
|
4
|
+
|
|
5
|
+
# Do not import competing editor/harness configuration into this dedicated Pi.
|
|
6
|
+
# These are discovery-source ids, not model-provider ids.
|
|
7
|
+
disabledProviders:
|
|
8
|
+
- claude
|
|
9
|
+
- codex
|
|
10
|
+
- cursor
|
|
11
|
+
- gemini
|
|
12
|
+
- github
|
|
13
|
+
- opencode
|
|
14
|
+
|
|
15
|
+
skills:
|
|
16
|
+
enabled: true
|
|
17
|
+
# /devflow is the canonical entry. /skill:* remains enabled for diagnosis and
|
|
18
|
+
# manual recovery; state transitions are still enforced by Devflow tools.
|
|
19
|
+
enableSkillCommands: true
|
|
20
|
+
customDirectories:
|
|
21
|
+
- .skills/plugins/devflow-core/skills
|
|
22
|
+
- .skills/plugins/devflow-intel/skills
|
|
23
|
+
- .skills/plugins/devflow-requirements/skills
|
|
24
|
+
- .skills/plugins/devflow-design/skills
|
|
25
|
+
- .skills/plugins/devflow-implementation/skills
|
|
26
|
+
- .skills/plugins/devflow-quality/skills
|
|
27
|
+
includeSkills:
|
|
28
|
+
- code-index-query
|
|
29
|
+
- code-review
|
|
30
|
+
- requirement-feasibility-review
|
|
31
|
+
- workflow-api-call-guide
|
|
32
|
+
- workflow-api-contract
|
|
33
|
+
- workflow-api-supplement
|
|
34
|
+
- workflow-audit-milestone
|
|
35
|
+
- workflow-backend-tech-spec
|
|
36
|
+
- workflow-bug-fix
|
|
37
|
+
- workflow-change-plan
|
|
38
|
+
- workflow-code-index
|
|
39
|
+
- workflow-complete-milestone
|
|
40
|
+
- workflow-context-sync
|
|
41
|
+
- workflow-demand-clarify
|
|
42
|
+
- workflow-design-rule-pack
|
|
43
|
+
- workflow-domain-modeling
|
|
44
|
+
- workflow-execute-phase
|
|
45
|
+
- workflow-feature-breakdown
|
|
46
|
+
- workflow-frontend-tech-spec
|
|
47
|
+
- workflow-generate-mainflow-cases
|
|
48
|
+
- workflow-integration-verify
|
|
49
|
+
- workflow-orchestrator
|
|
50
|
+
- workflow-pipeline
|
|
51
|
+
- workflow-project-context
|
|
52
|
+
- workflow-requirement-baseline
|
|
53
|
+
- workflow-requirement-triage
|
|
54
|
+
- workflow-ui-spec
|
|
55
|
+
- workflow-update-navigation
|
|
56
|
+
- workflow-verify-work
|
|
57
|
+
- workflow-wayfinder
|
|
58
|
+
enableClaudeUser: false
|
|
59
|
+
enableClaudeProject: false
|
|
60
|
+
enableCodexUser: false
|
|
61
|
+
enablePiUser: false
|
|
62
|
+
enablePiProject: false
|
|
63
|
+
enableAgentsUser: false
|
|
64
|
+
enableAgentsProject: false
|
|
65
|
+
|
|
66
|
+
task:
|
|
67
|
+
batch: true
|
|
68
|
+
maxConcurrency: 4
|
|
69
|
+
maxRecursionDepth: 1
|
|
70
|
+
enableLsp: true
|
|
71
|
+
# Agent-name overrides take precedence over agent frontmatter and parent-model
|
|
72
|
+
# inheritance. /devflow doctor refuses to start until @smol, @task, and @slow
|
|
73
|
+
# resolve to three distinct authenticated models in the project role store.
|
|
74
|
+
agentModelOverrides:
|
|
75
|
+
project-scout: "@smol"
|
|
76
|
+
requirements-auditor: "@slow"
|
|
77
|
+
contract-auditor: "@slow"
|
|
78
|
+
implementation-worker: "@task"
|
|
79
|
+
devflow-code-reviewer: "@slow"
|
|
80
|
+
verification-runner: "@task"
|
|
81
|
+
isolation:
|
|
82
|
+
mode: auto
|
|
83
|
+
apply: false
|
|
84
|
+
|
|
85
|
+
lsp:
|
|
86
|
+
enabled: true
|
|
87
|
+
lazy: true
|
|
88
|
+
diagnosticsOnWrite: true
|
|
89
|
+
|
|
90
|
+
tools:
|
|
91
|
+
approvalMode: write
|
|
92
|
+
approval:
|
|
93
|
+
read: allow
|
|
94
|
+
grep: allow
|
|
95
|
+
find: allow
|
|
96
|
+
lsp: allow
|
|
97
|
+
bash: prompt
|
|
98
|
+
devflow_doctor: allow
|
|
99
|
+
devflow_state: allow
|
|
100
|
+
devflow_bootstrap: prompt
|
|
101
|
+
devflow_transition: prompt
|
|
102
|
+
devflow_artifact: prompt
|
|
103
|
+
devflow_code_index: allow
|
|
104
|
+
devflow_context_cursor: prompt
|
|
105
|
+
devflow_design_rule: prompt
|
|
106
|
+
devflow_mainflow: prompt
|
|
107
|
+
devflow_skill_script: prompt
|
|
108
|
+
devflow_context_sync: allow
|
|
109
|
+
|
|
110
|
+
advisor:
|
|
111
|
+
enabled: false
|
|
112
|
+
subagents: false
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"sources": {
|
|
3
|
+
"state": ".planning/STATE.md",
|
|
4
|
+
"workflow": ".context/workflow.md",
|
|
5
|
+
"indexes": [
|
|
6
|
+
".planning/rules/INDEX.md",
|
|
7
|
+
".context/spec/index.md",
|
|
8
|
+
".planning/navigation/INDEX.md",
|
|
9
|
+
".planning/code-index/INDEX.md"
|
|
10
|
+
],
|
|
11
|
+
"lessons": ".context/lessons/README.md"
|
|
12
|
+
},
|
|
13
|
+
"gates": {
|
|
14
|
+
"index_first": {
|
|
15
|
+
"policy": ".agent-gates/index-first.json"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 2,
|
|
3
|
+
"mode": "advisory",
|
|
4
|
+
"protected_roots": [],
|
|
5
|
+
"required_evidence": [
|
|
6
|
+
".planning/rules/INDEX.md",
|
|
7
|
+
".context/spec/index.md",
|
|
8
|
+
".planning/navigation/INDEX.md"
|
|
9
|
+
],
|
|
10
|
+
"optional_evidence": [
|
|
11
|
+
".planning/code-index/INDEX.md"
|
|
12
|
+
],
|
|
13
|
+
"allowed_before_gate": [
|
|
14
|
+
"AGENTS.md",
|
|
15
|
+
"README.md",
|
|
16
|
+
".omp/**",
|
|
17
|
+
".planning/**",
|
|
18
|
+
".context/**",
|
|
19
|
+
".agent-gates/**",
|
|
20
|
+
".skills/**"
|
|
21
|
+
],
|
|
22
|
+
"context_sync": {
|
|
23
|
+
"enabled": true,
|
|
24
|
+
"auto_light": true,
|
|
25
|
+
"light_timeout_seconds": 120,
|
|
26
|
+
"full_file_threshold": 30,
|
|
27
|
+
"ignore": [
|
|
28
|
+
".omp/**",
|
|
29
|
+
".planning/**",
|
|
30
|
+
".context/**",
|
|
31
|
+
".agent-gates/**",
|
|
32
|
+
".skills/**"
|
|
33
|
+
],
|
|
34
|
+
"medium_patterns": [
|
|
35
|
+
"**/routes.*",
|
|
36
|
+
"**/router.*",
|
|
37
|
+
"**/routes/**",
|
|
38
|
+
"**/api/**",
|
|
39
|
+
"**/*handler.*",
|
|
40
|
+
"**/controllers/**",
|
|
41
|
+
"**/migrations/**",
|
|
42
|
+
"package.json",
|
|
43
|
+
"**/package.json",
|
|
44
|
+
"go.mod",
|
|
45
|
+
"**/go.mod",
|
|
46
|
+
"Cargo.toml",
|
|
47
|
+
"**/Cargo.toml",
|
|
48
|
+
"pyproject.toml",
|
|
49
|
+
"**/pyproject.toml",
|
|
50
|
+
"Makefile",
|
|
51
|
+
"**/Makefile",
|
|
52
|
+
"**/vite.config.*",
|
|
53
|
+
"**/next.config.*"
|
|
54
|
+
],
|
|
55
|
+
"full_patterns": []
|
|
56
|
+
}
|
|
57
|
+
}
|