@hassangameryt/freeflow 0.1.0 → 0.3.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/.agents/plugins/marketplace.json +1 -1
- package/.claude-plugin/marketplace.json +2 -2
- package/{plugins/freeflow/.claude-plugin → .claude-plugin}/plugin.json +1 -1
- package/{plugins/freeflow/.codex-plugin → .codex-plugin}/plugin.json +1 -1
- package/README.md +25 -16
- package/assets/freeflow-plugin-icon.png +0 -0
- package/{plugins/freeflow/command-surface.json → command-surface.json} +10 -10
- package/evals/README.md +32 -0
- package/evals/fixtures/copy-conventions.md +31 -0
- package/evals/fixtures/output-router/README.md +12 -0
- package/evals/fixtures/output-router/failed-command-output.txt +9 -0
- package/evals/fixtures/output-router/large-router-manual.md +63 -0
- package/evals/fixtures/output-router/native-large-output.txt +40 -0
- package/evals/fixtures/output-router/noisy-test-output.txt +30 -0
- package/evals/fixtures/output-router/verification-output.txt +8 -0
- package/evals/fixtures/tiny-artifact-review-app/README.md +5 -0
- package/evals/fixtures/tiny-artifact-review-app/docs/billing-policy.md +10 -0
- package/evals/fixtures/tiny-artifact-review-app/docs/specs/billing-webhook-api-draft.md +21 -0
- package/evals/fixtures/tiny-artifact-review-app/docs/specs/failed-payment-grace-period.md +24 -0
- package/evals/fixtures/tiny-artifact-review-app/docs/specs/immediate-downgrade.md +17 -0
- package/evals/fixtures/tiny-artifact-review-app/tests/billing.test.md +8 -0
- package/evals/fixtures/tiny-commit-ambiguous-app/.freeflow-eval-setup.sh +15 -0
- package/evals/fixtures/tiny-commit-ambiguous-app/README.md +3 -0
- package/evals/fixtures/tiny-commit-ambiguous-app/src/billing.ts +5 -0
- package/evals/fixtures/tiny-commit-ambiguous-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-commit-ambiguous-app/tests/settings.test.md +5 -0
- package/evals/fixtures/tiny-commit-app/.freeflow-eval-setup.sh +14 -0
- package/evals/fixtures/tiny-commit-app/README.md +3 -0
- package/evals/fixtures/tiny-commit-app/docs/specs/settings-title.md +5 -0
- package/evals/fixtures/tiny-commit-app/src/billing.ts +5 -0
- package/evals/fixtures/tiny-commit-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-commit-app/tests/settings.test.md +5 -0
- package/evals/fixtures/tiny-commit-everything-app/.freeflow-eval-setup.sh +15 -0
- package/evals/fixtures/tiny-commit-everything-app/README.md +3 -0
- package/evals/fixtures/tiny-commit-everything-app/docs/specs/settings-title.md +5 -0
- package/evals/fixtures/tiny-commit-everything-app/src/billing.ts +5 -0
- package/evals/fixtures/tiny-commit-everything-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-commit-everything-app/tests/settings.test.md +5 -0
- package/evals/fixtures/tiny-commit-staged-app/.freeflow-eval-setup.sh +15 -0
- package/evals/fixtures/tiny-commit-staged-app/README.md +3 -0
- package/evals/fixtures/tiny-commit-staged-app/docs/specs/settings-title.md +5 -0
- package/evals/fixtures/tiny-commit-staged-app/src/billing.ts +5 -0
- package/evals/fixtures/tiny-commit-staged-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-commit-staged-app/tests/settings.test.md +5 -0
- package/evals/fixtures/tiny-commit-staged-mixed-app/.freeflow-eval-setup.sh +15 -0
- package/evals/fixtures/tiny-commit-staged-mixed-app/README.md +3 -0
- package/evals/fixtures/tiny-commit-staged-mixed-app/docs/billing-policy.md +3 -0
- package/evals/fixtures/tiny-commit-staged-mixed-app/docs/release-notes.md +3 -0
- package/evals/fixtures/tiny-commit-staged-mixed-app/src/billing.ts +5 -0
- package/evals/fixtures/tiny-dashboard-stale-app/README.md +11 -0
- package/evals/fixtures/tiny-dashboard-stale-app/src/api-client.ts +13 -0
- package/evals/fixtures/tiny-dashboard-stale-app/src/dashboard-data.ts +19 -0
- package/evals/fixtures/tiny-dashboard-stale-app/tests/dashboard-data.test.md +9 -0
- package/evals/fixtures/tiny-decision-destination-app/README.md +6 -0
- package/evals/fixtures/tiny-decision-destination-app/src/risk.ts +8 -0
- package/evals/fixtures/tiny-decision-destination-app/tests/risk.test.md +4 -0
- package/evals/fixtures/tiny-design-depth-app/README.md +15 -0
- package/evals/fixtures/tiny-design-depth-app/src/routes.ts +25 -0
- package/evals/fixtures/tiny-design-depth-app/src/sendEmail.ts +3 -0
- package/evals/fixtures/tiny-design-depth-app/src/sendSms.ts +3 -0
- package/evals/fixtures/tiny-design-depth-app/src/telemetry.ts +3 -0
- package/evals/fixtures/tiny-design-depth-app/tests/routes.test.md +12 -0
- package/evals/fixtures/tiny-eval-method-app/README.md +8 -0
- package/evals/fixtures/tiny-eval-method-app/evals/reports/review-pr-eval-result.md +5 -0
- package/evals/fixtures/tiny-eval-method-app/evals/reports/triage-question-failure.md +17 -0
- package/evals/fixtures/tiny-eval-method-app/evals/runs/review-pr-with-skill-output.diff +11 -0
- package/evals/fixtures/tiny-eval-method-app/evals/runs/review-pr-with-skill-output.md +3 -0
- package/evals/fixtures/tiny-eval-method-app/skills/review-pr/SKILL.md +10 -0
- package/evals/fixtures/tiny-eval-method-app/skills/triage-question/SKILL.md +10 -0
- package/evals/fixtures/tiny-execute-plan-app/README.md +5 -0
- package/evals/fixtures/tiny-execute-plan-app/checks/settings-and-billing-check.sh +5 -0
- package/evals/fixtures/tiny-execute-plan-app/docs/billing-policy.md +10 -0
- package/evals/fixtures/tiny-execute-plan-app/docs/plans/immediate-downgrade-plan.md +11 -0
- package/evals/fixtures/tiny-execute-plan-app/docs/plans/settings-title-plan.md +12 -0
- package/evals/fixtures/tiny-execute-plan-app/docs/plans/settings-title-with-bad-check.md +15 -0
- package/evals/fixtures/tiny-execute-plan-app/docs/plans/unverified-billing-plan.md +9 -0
- package/evals/fixtures/tiny-execute-plan-app/docs/specs/failed-payment-grace-period.md +9 -0
- package/evals/fixtures/tiny-execute-plan-app/docs/specs/settings-title.md +9 -0
- package/evals/fixtures/tiny-execute-plan-app/src/billing.ts +7 -0
- package/evals/fixtures/tiny-execute-plan-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-execute-plan-app/tests/billing.test.md +7 -0
- package/evals/fixtures/tiny-execute-plan-app/tests/settings.test.md +5 -0
- package/evals/fixtures/tiny-execute-review-loop-app/README.md +5 -0
- package/evals/fixtures/tiny-execute-review-loop-app/docs/billing-policy.md +9 -0
- package/evals/fixtures/tiny-execute-review-loop-app/docs/plans/settings-title-plan.md +12 -0
- package/evals/fixtures/tiny-execute-review-loop-app/docs/review/previous-agent-summary.md +15 -0
- package/evals/fixtures/tiny-execute-review-loop-app/docs/review/review-pass-1-non-pass.md +11 -0
- package/evals/fixtures/tiny-execute-review-loop-app/docs/specs/settings-title.md +9 -0
- package/evals/fixtures/tiny-execute-review-loop-app/src/billing.ts +7 -0
- package/evals/fixtures/tiny-execute-review-loop-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-execute-review-loop-app/tests/billing.test.md +7 -0
- package/evals/fixtures/tiny-execute-review-loop-app/tests/settings.test.md +5 -0
- package/evals/fixtures/tiny-flaky-session-app/README.md +10 -0
- package/evals/fixtures/tiny-flaky-session-app/src/session-timeout.ts +13 -0
- package/evals/fixtures/tiny-flaky-session-app/tests/session-timeout.test.md +8 -0
- package/evals/fixtures/tiny-handoff-app/README.md +5 -0
- package/evals/fixtures/tiny-handoff-app/docs/billing-policy.md +10 -0
- package/evals/fixtures/tiny-handoff-app/docs/handoffs/old-agent-handoff.md +8 -0
- package/evals/fixtures/tiny-handoff-app/docs/plans/billing-retry-plan.md +11 -0
- package/evals/fixtures/tiny-handoff-app/src/billing.ts +7 -0
- package/evals/fixtures/tiny-handoff-report-app/README.md +3 -0
- package/evals/fixtures/tiny-handoff-report-app/evals/runs/handoff-3/hof-003/with-skill-output.diff +1 -0
- package/evals/fixtures/tiny-handoff-report-app/evals/runs/handoff-3/hof-003/with-skill-output.md +1 -0
- package/evals/fixtures/tiny-handoff-report-app/evals/scores/hof-003-score.txt +4 -0
- package/evals/fixtures/tiny-plan-app/README.md +5 -0
- package/evals/fixtures/tiny-plan-app/docs/billing-policy.md +10 -0
- package/evals/fixtures/tiny-plan-app/docs/specs/failed-payment-grace-period.md +25 -0
- package/evals/fixtures/tiny-plan-app/src/billing.ts +17 -0
- package/evals/fixtures/tiny-plan-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-plan-app/tests/billing.test.md +8 -0
- package/evals/fixtures/tiny-plan-app/tests/settings.test.md +5 -0
- package/evals/fixtures/tiny-plan-strict-api-app/README.md +3 -0
- package/evals/fixtures/tiny-plan-strict-api-app/docs/billing-policy.md +5 -0
- package/evals/fixtures/tiny-plan-strict-api-app/docs/specs/billing-webhook-api.md +25 -0
- package/evals/fixtures/tiny-plan-strict-api-app/src/billing.ts +5 -0
- package/evals/fixtures/tiny-plan-strict-api-app/src/webhooks.ts +3 -0
- package/evals/fixtures/tiny-plan-strict-api-app/tests/billing-webhook.test.md +8 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/.freeflow/config.json +3 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/AGENTS.md +15 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/README.md +16 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/docs/auth-review.md +15 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/docs/billing-policy.md +10 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/docs/copy-conventions.md +15 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/src/auth-middleware.ts +12 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/src/billing.ts +20 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/src/login-copy.ts +1 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/tests/auth-middleware.test.md +8 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/tests/billing.test.md +8 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/tests/copy.test.md +7 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/AGENTS.md +15 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/README.md +16 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/docs/auth-review.md +15 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/docs/billing-policy.md +10 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/docs/copy-conventions.md +15 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/src/auth-middleware.ts +12 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/src/billing.ts +20 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/src/login-copy.ts +1 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/tests/auth-middleware.test.md +8 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/tests/billing.test.md +8 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/tests/copy.test.md +7 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/.freeflow/config.json +3 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/AGENTS.md +15 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/README.md +16 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/docs/auth-review.md +15 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/docs/billing-policy.md +10 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/docs/copy-conventions.md +15 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/src/auth-middleware.ts +12 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/src/billing.ts +20 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/src/login-copy.ts +1 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/tests/auth-middleware.test.md +8 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/tests/billing.test.md +8 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/tests/copy.test.md +7 -0
- package/evals/fixtures/tiny-report-performance-app/README.md +11 -0
- package/evals/fixtures/tiny-report-performance-app/docs/performance.md +10 -0
- package/evals/fixtures/tiny-report-performance-app/src/report-summary.ts +29 -0
- package/evals/fixtures/tiny-report-performance-app/tests/report-performance.test.md +8 -0
- package/evals/fixtures/tiny-review-request-app/README.md +3 -0
- package/evals/fixtures/tiny-review-request-app/docs/billing-policy.md +5 -0
- package/evals/fixtures/tiny-review-request-app/docs/plans/billing-webhook-api.md +19 -0
- package/evals/fixtures/tiny-review-request-app/docs/review/previous-agent-summary.md +20 -0
- package/evals/fixtures/tiny-review-request-app/docs/specs/billing-webhook-api.md +25 -0
- package/evals/fixtures/tiny-review-request-app/src/billing.ts +11 -0
- package/evals/fixtures/tiny-review-request-app/src/webhooks.ts +19 -0
- package/evals/fixtures/tiny-review-request-app/tests/billing-webhook.test.md +8 -0
- package/evals/fixtures/tiny-review-work-app/README.md +5 -0
- package/evals/fixtures/tiny-review-work-app/docs/billing-policy.md +9 -0
- package/evals/fixtures/tiny-review-work-app/docs/plans/settings-title-plan.md +12 -0
- package/evals/fixtures/tiny-review-work-app/docs/review/previous-agent-summary.md +15 -0
- package/evals/fixtures/tiny-review-work-app/docs/specs/settings-title.md +9 -0
- package/evals/fixtures/tiny-review-work-app/src/billing.ts +7 -0
- package/evals/fixtures/tiny-review-work-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-review-work-app/tests/billing.test.md +7 -0
- package/evals/fixtures/tiny-review-work-app/tests/settings.test.md +5 -0
- package/evals/fixtures/tiny-saas-app/README.md +16 -0
- package/evals/fixtures/tiny-saas-app/docs/auth-review.md +15 -0
- package/evals/fixtures/tiny-saas-app/docs/billing-policy.md +10 -0
- package/evals/fixtures/tiny-saas-app/docs/copy-conventions.md +15 -0
- package/evals/fixtures/tiny-saas-app/docs/specs/settings-title.md +13 -0
- package/evals/fixtures/tiny-saas-app/src/auth-middleware.ts +12 -0
- package/evals/fixtures/tiny-saas-app/src/billing.ts +20 -0
- package/evals/fixtures/tiny-saas-app/src/login-copy.ts +1 -0
- package/evals/fixtures/tiny-saas-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-saas-app/tests/auth-middleware.test.md +8 -0
- package/evals/fixtures/tiny-saas-app/tests/billing.test.md +8 -0
- package/evals/fixtures/tiny-saas-app/tests/copy.test.md +7 -0
- package/evals/fixtures/tiny-setup-agents-app/AGENTS.md +6 -0
- package/evals/fixtures/tiny-setup-both-app/AGENTS.md +5 -0
- package/evals/fixtures/tiny-setup-both-app/CLAUDE.md +5 -0
- package/evals/fixtures/tiny-setup-claude-app/CLAUDE.md +6 -0
- package/evals/fixtures/tiny-setup-codex-rules-app/.codex/rules/shell.rules +5 -0
- package/evals/fixtures/tiny-setup-codex-rules-app/AGENTS.md +6 -0
- package/evals/fixtures/tiny-setup-conflict-app/AGENTS.md +6 -0
- package/evals/fixtures/tiny-setup-existing-block-app/AGENTS.md +14 -0
- package/evals/fixtures/tiny-setup-four-rules-app/CLAUDE.md +6 -0
- package/evals/fixtures/tiny-skill-dev-app/README.md +10 -0
- package/evals/fixtures/tiny-skill-dev-app/evals/prompts/review-pr-001.txt +8 -0
- package/evals/fixtures/tiny-skill-dev-app/evals/reports/review-pr-failure.md +17 -0
- package/evals/fixtures/tiny-skill-dev-app/skills/review-pr/SKILL.md +13 -0
- package/evals/fixtures/tiny-team-app/README.md +5 -0
- package/evals/fixtures/tiny-team-app/docs/product.md +6 -0
- package/evals/fixtures/tiny-team-app/src/teams.ts +9 -0
- package/evals/fixtures/tiny-team-app/src/users.ts +5 -0
- package/evals/fixtures/tiny-team-app/tests/teams.test.md +7 -0
- package/evals/fixtures/tiny-verify-app/README.md +5 -0
- package/evals/fixtures/tiny-verify-app/src/settings-nav.ts +1 -0
- package/evals/fixtures/tiny-verify-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-verify-app/tests/settings.test.md +7 -0
- package/evals/prompts/aon-001.txt +2 -0
- package/evals/prompts/byp-001.txt +2 -0
- package/evals/prompts/byp-002.txt +2 -0
- package/evals/prompts/cap-001.txt +3 -0
- package/evals/prompts/cap-002.txt +3 -0
- package/evals/prompts/cmd-001.txt +3 -0
- package/evals/prompts/cmd-002.txt +3 -0
- package/evals/prompts/cmd-003.txt +6 -0
- package/evals/prompts/cmd-004.txt +5 -0
- package/evals/prompts/cmd-005.txt +5 -0
- package/evals/prompts/cmd-006.txt +5 -0
- package/evals/prompts/cmd-007.txt +5 -0
- package/evals/prompts/cmd-008.txt +5 -0
- package/evals/prompts/cmd-009.txt +8 -0
- package/evals/prompts/cmd-010.txt +5 -0
- package/evals/prompts/cmd-011.txt +5 -0
- package/evals/prompts/cmd-012.txt +5 -0
- package/evals/prompts/cmd-013.txt +5 -0
- package/evals/prompts/cmd-014.txt +7 -0
- package/evals/prompts/cmd-015.txt +7 -0
- package/evals/prompts/cmd-016.txt +5 -0
- package/evals/prompts/cmt-001.txt +1 -0
- package/evals/prompts/cmt-002.txt +1 -0
- package/evals/prompts/cmt-003.txt +1 -0
- package/evals/prompts/cmt-004.txt +1 -0
- package/evals/prompts/cmt-005.txt +1 -0
- package/evals/prompts/dfd-001.txt +3 -0
- package/evals/prompts/dia-001.txt +3 -0
- package/evals/prompts/dia-002.txt +3 -0
- package/evals/prompts/dia-003.txt +3 -0
- package/evals/prompts/dis-001.txt +5 -0
- package/evals/prompts/dis-002.txt +5 -0
- package/evals/prompts/esk-001.txt +5 -0
- package/evals/prompts/esk-002.txt +5 -0
- package/evals/prompts/esk-003.txt +5 -0
- package/evals/prompts/grc-001.txt +3 -0
- package/evals/prompts/hof-001.txt +3 -0
- package/evals/prompts/hof-002.txt +1 -0
- package/evals/prompts/hof-003.txt +1 -0
- package/evals/prompts/hof-004.txt +1 -0
- package/evals/prompts/hof-005.txt +1 -0
- package/evals/prompts/ivg-001.txt +1 -0
- package/evals/prompts/ivg-002.txt +11 -0
- package/evals/prompts/ivg-003.txt +1 -0
- package/evals/prompts/ivg-004.txt +1 -0
- package/evals/prompts/mode-001.txt +3 -0
- package/evals/prompts/mode-002.txt +1 -0
- package/evals/prompts/mode-003.txt +3 -0
- package/evals/prompts/mode-004.txt +3 -0
- package/evals/prompts/mode-005.txt +3 -0
- package/evals/prompts/mode-006.txt +3 -0
- package/evals/prompts/mode-007.txt +3 -0
- package/evals/prompts/otr-001.txt +3 -0
- package/evals/prompts/otr-002.txt +3 -0
- package/evals/prompts/rar-001.txt +5 -0
- package/evals/prompts/rar-002.txt +3 -0
- package/evals/prompts/rar-003.txt +6 -0
- package/evals/prompts/rar-004.txt +15 -0
- package/evals/prompts/rar-005.txt +10 -0
- package/evals/prompts/rbr-001.txt +3 -0
- package/evals/prompts/rbr-002.txt +3 -0
- package/evals/prompts/rbr-003.txt +7 -0
- package/evals/prompts/rev-001.txt +3 -0
- package/evals/prompts/rev-002.txt +5 -0
- package/evals/prompts/rev-003.txt +6 -0
- package/evals/prompts/rev-004.txt +1 -0
- package/evals/prompts/rev-005.txt +15 -0
- package/evals/prompts/rev-006.txt +5 -0
- package/evals/prompts/stp-001.txt +1 -0
- package/evals/prompts/stp-002.txt +1 -0
- package/evals/prompts/stp-003.txt +1 -0
- package/evals/prompts/stp-004.txt +1 -0
- package/evals/prompts/stp-005.txt +1 -0
- package/evals/prompts/stp-006.txt +1 -0
- package/evals/prompts/stp-007.txt +1 -0
- package/evals/prompts/stp-008.txt +1 -0
- package/evals/prompts/stp-009.txt +1 -0
- package/evals/prompts/stp-010.txt +1 -0
- package/evals/prompts/stp-011.txt +1 -0
- package/evals/prompts/vfy-003.txt +1 -0
- package/evals/prompts/wpl-001.txt +3 -0
- package/evals/prompts/wpl-002.txt +5 -0
- package/evals/prompts/wpl-003.txt +3 -0
- package/evals/prompts/wpl-004.txt +5 -0
- package/evals/prompts/wpl-005.txt +1 -0
- package/evals/prompts/wrc-001.txt +10 -0
- package/evals/prompts/wrc-002.txt +3 -0
- package/evals/prompts/wsk-001.txt +6 -0
- package/evals/prompts/wsp-001.txt +5 -0
- package/evals/prompts/wsp-002.txt +15 -0
- package/evals/prompts/wsp-003.txt +3 -0
- package/evals/prompts/wsp-004.txt +15 -0
- package/evals/prompts/wsp-005.txt +5 -0
- package/evals/prompts/wsp-006.txt +12 -0
- package/evals/prompts/wsp-007.txt +9 -0
- package/evals/prompts/wsp-008.txt +13 -0
- package/evals/prompts/xpl-001.txt +1 -0
- package/evals/prompts/xpl-002.txt +3 -0
- package/evals/prompts/xpl-003.txt +3 -0
- package/evals/prompts/xpl-004.txt +3 -0
- package/evals/prompts/xpl-005.txt +5 -0
- package/evals/prompts/xpl-006.txt +3 -0
- package/evals/registries/adversarial-evals.json +39 -0
- package/evals/registries/fixture-evals.json +2513 -0
- package/evals/registries/handoff-evals.json +74 -0
- package/evals/registries/legacy-evals.json +147 -0
- package/evals/registries/skill-evidence.json +193 -0
- package/evals/registries/verify-work-evals.json +46 -0
- package/evals/reports/acceptance/v0.1-acceptance-report.md +130 -0
- package/evals/reports/by-command-surface/command-surface-1-report.md +45 -0
- package/evals/reports/by-command-surface/command-surface-10-report.md +76 -0
- package/evals/reports/by-command-surface/command-surface-11-report.md +77 -0
- package/evals/reports/by-command-surface/command-surface-12-report.md +91 -0
- package/evals/reports/by-command-surface/command-surface-13-report.md +64 -0
- package/evals/reports/by-command-surface/command-surface-14-report.md +66 -0
- package/evals/reports/by-command-surface/command-surface-15-report.md +124 -0
- package/evals/reports/by-command-surface/command-surface-16-report.md +39 -0
- package/evals/reports/by-command-surface/command-surface-2-report.md +80 -0
- package/evals/reports/by-command-surface/command-surface-3-report.md +86 -0
- package/evals/reports/by-command-surface/command-surface-4-report.md +76 -0
- package/evals/reports/by-command-surface/command-surface-5-report.md +80 -0
- package/evals/reports/by-command-surface/command-surface-6-report.md +74 -0
- package/evals/reports/by-command-surface/command-surface-7-report.md +84 -0
- package/evals/reports/by-command-surface/command-surface-8-report.md +79 -0
- package/evals/reports/by-command-surface/command-surface-9-report.md +79 -0
- package/evals/reports/by-command-surface/command-surface-matrix.md +91 -0
- package/evals/reports/by-skill/bypass-1-report.md +124 -0
- package/evals/reports/by-skill/capture-decisions-1-report.md +99 -0
- package/evals/reports/by-skill/capture-decisions-2-report.md +102 -0
- package/evals/reports/by-skill/commit-work-1-report.md +165 -0
- package/evals/reports/by-skill/commit-work-2-report.md +109 -0
- package/evals/reports/by-skill/design-for-depth-1-report.md +95 -0
- package/evals/reports/by-skill/diagnose-failure-1-report.md +91 -0
- package/evals/reports/by-skill/diagnose-failure-2-report.md +94 -0
- package/evals/reports/by-skill/discover-1-report.md +118 -0
- package/evals/reports/by-skill/evaluate-skill-2-report.md +71 -0
- package/evals/reports/by-skill/execute-plan-1-report.md +103 -0
- package/evals/reports/by-skill/execute-plan-2-report.md +112 -0
- package/evals/reports/by-skill/execute-plan-3-report.md +87 -0
- package/evals/reports/by-skill/grill-context-1-report.md +103 -0
- package/evals/reports/by-skill/handoff-1-report.md +123 -0
- package/evals/reports/by-skill/handoff-2-report.md +105 -0
- package/evals/reports/by-skill/handoff-3-report.md +100 -0
- package/evals/reports/by-skill/handoff-7-report.md +77 -0
- package/evals/reports/by-skill/interview-gate-1-report.md +63 -0
- package/evals/reports/by-skill/interview-gate-2-report.md +105 -0
- package/evals/reports/by-skill/mode-contract-1-report.md +74 -0
- package/evals/reports/by-skill/mode-contract-2-report.md +87 -0
- package/evals/reports/by-skill/mode-contract-3-report.md +65 -0
- package/evals/reports/by-skill/mode-contract-4-report.md +71 -0
- package/evals/reports/by-skill/mode-contract-5-report.md +70 -0
- package/evals/reports/by-skill/output-router-1-report.md +76 -0
- package/evals/reports/by-skill/output-router-2-report.md +65 -0
- package/evals/reports/by-skill/research-1-report.md +144 -0
- package/evals/reports/by-skill/research-brief-1-report.md +94 -0
- package/evals/reports/by-skill/research-brief-2-report.md +75 -0
- package/evals/reports/by-skill/review-artifact-1-report.md +91 -0
- package/evals/reports/by-skill/review-artifact-2-report.md +79 -0
- package/evals/reports/by-skill/review-artifact-3-report.md +120 -0
- package/evals/reports/by-skill/review-artifact-4-report.md +89 -0
- package/evals/reports/by-skill/review-artifact-5-report.md +66 -0
- package/evals/reports/by-skill/review-work-1-report.md +85 -0
- package/evals/reports/by-skill/review-work-2-report.md +87 -0
- package/evals/reports/by-skill/review-work-3-report.md +104 -0
- package/evals/reports/by-skill/review-work-4-report.md +108 -0
- package/evals/reports/by-skill/review-work-5-report.md +73 -0
- package/evals/reports/by-skill/review-work-6-report.md +66 -0
- package/evals/reports/by-skill/setup-freeflow-1-report.md +199 -0
- package/evals/reports/by-skill/setup-freeflow-2-report.md +105 -0
- package/evals/reports/by-skill/setup-freeflow-3-report.md +105 -0
- package/evals/reports/by-skill/setup-freeflow-4-report.md +88 -0
- package/evals/reports/by-skill/setup-freeflow-5-report.md +115 -0
- package/evals/reports/by-skill/skill-authoring-1-report.md +81 -0
- package/evals/reports/by-skill/verify-work-1-report.md +111 -0
- package/evals/reports/by-skill/verify-work-2-report.md +120 -0
- package/evals/reports/by-skill/workflow-1-report.md +65 -0
- package/evals/reports/by-skill/write-plan-1-report.md +123 -0
- package/evals/reports/by-skill/write-plan-2-report.md +98 -0
- package/evals/reports/by-skill/write-plan-3-report.md +110 -0
- package/evals/reports/by-skill/write-spec-1-report.md +88 -0
- package/evals/reports/by-skill/write-spec-2-report.md +89 -0
- package/evals/reports/by-skill/write-spec-3-report.md +90 -0
- package/evals/reports/by-skill/write-spec-4-report.md +167 -0
- package/evals/reports/harness/claude-harness-1-report.md +103 -0
- package/evals/reports/harness/eval-harness-1-report.md +91 -0
- package/evals/reports/iterations/iteration-1-report.md +71 -0
- package/evals/reports/iterations/iteration-2-report.md +78 -0
- package/evals/reports/iterations/iteration-3-report.md +118 -0
- package/evals/reports/iterations/iteration-4-report.md +131 -0
- package/evals/reports/iterations/iteration-5-report.md +149 -0
- package/evals/reports/iterations/iteration-6-report.md +136 -0
- package/evals/reports/runtime/always-on-runtime-1-report.md +107 -0
- package/evals/reports/runtime/context-mode-normalized-benchmark-1-report.md +52 -0
- package/evals/reports/runtime/context-mode-real-deep-baseline-1-report.md +410 -0
- package/evals/reports/runtime/context-mode-real-deep-final-slice-11-report.md +203 -0
- package/evals/reports/runtime/context-mode-real-deep-final-slice-11-review.md +51 -0
- package/evals/reports/runtime/context-saving-native-tools-baseline-1-report.md +99 -0
- package/evals/reports/runtime/eryx-python-compatibility-reprobe-1-report.md +166 -0
- package/evals/reports/runtime/eryx-python-proof-spike-1-report.md +96 -0
- package/evals/reports/runtime/eryx-python-proof-spike-2-report.md +151 -0
- package/evals/reports/runtime/eryx-python-script-derive-execution-1-report.md +233 -0
- package/evals/reports/runtime/jq-script-derive-execution-1-report.md +215 -0
- package/evals/reports/runtime/jq-wasm-proof-spike-1-report.md +67 -0
- package/evals/reports/runtime/output-router-benchmark-1-report.md +81 -0
- package/evals/reports/runtime/output-router-capture-derive-provider-eval-1-report.md +35 -0
- package/evals/reports/runtime/output-router-codex-large-index-sqlite-adhoc-report.md +150 -0
- package/evals/reports/runtime/output-router-codex-qa-benchmark-1-report.md +46 -0
- package/evals/reports/runtime/output-router-command-benchmark-1-report.md +62 -0
- package/evals/reports/runtime/output-router-index-benchmark-1-report.md +64 -0
- package/evals/reports/runtime/output-router-regression-1-report.md +81 -0
- package/evals/reports/runtime/output-router-transform-eval-1-report.md +28 -0
- package/evals/reports/runtime/pi-observed-routing-eval-1-report.md +44 -0
- package/evals/reports/runtime/quickjs-script-derive-execution-1-report.md +159 -0
- package/evals/reports/runtime/quickjs-wasi-proof-spike-1-report.md +55 -0
- package/evals/reports/runtime/render-format-row-protocol-1-report.md +58 -0
- package/evals/reports/runtime/script-sandbox-adapter-selection-review-1-report.md +84 -0
- package/evals/reports/runtime/script-sandbox-probe-resource-hardening-1-report.md +51 -0
- package/evals/reports/runtime/storage-policy-benchmark-1-report.md +176 -0
- package/evals/reports/runtime/vault-index-storage-spike-1-report.md +39 -0
- package/evals/reports/runtime/workflow-context-hook-1-report.md +82 -0
- package/evals/runbooks/adversarial-eval-runbook.md +28 -0
- package/evals/runbooks/fixture-eval-runbook.md +137 -0
- package/evals/runbooks/handoff-eval-runbook.md +22 -0
- package/evals/runbooks/verify-work-eval-runbook.md +27 -0
- package/evals/scripts/audit-command-surface.sh +160 -0
- package/evals/scripts/check-activation-contract.sh +121 -0
- package/evals/scripts/check-runtime-context-hook.sh +183 -0
- package/evals/scripts/grade-fixture-eval.sh +446 -0
- package/evals/scripts/run-claude-fixture-eval.sh +26 -0
- package/evals/scripts/run-codex-fixture-eval.sh +26 -0
- package/evals/scripts/run-eryx-python-proof-spike.js +559 -0
- package/evals/scripts/run-fixture-eval-by-id.sh +23 -0
- package/evals/scripts/run-fixture-eval.sh +464 -0
- package/evals/scripts/run-jq-wasm-proof-spike.js +299 -0
- package/evals/scripts/run-output-router-transform-eval.js +115 -0
- package/evals/scripts/run-pi-observed-routing-eval.js +478 -0
- package/evals/scripts/run-quickjs-wasi-proof-spike.js +339 -0
- package/evals/scripts/skill-evidence.sh +316 -0
- package/evals/scripts/validate-release-metadata.sh +486 -0
- package/evals/suites/v0.1-acceptance-suite.md +131 -0
- package/{plugins/freeflow/hooks → hooks}/freeflow-runtime-context.mjs +65 -14
- package/package.json +46 -13
- package/pi-extension/dist/host-producer-identification.js +186 -0
- package/pi-extension/dist/index.js +85 -0
- package/pi-extension/dist/mcp-config.js +30 -0
- package/pi-extension/dist/native-safety-net.js +209 -0
- package/pi-extension/dist/observed-tool-routing.js +114 -0
- package/pi-extension/dist/renderers.js +835 -0
- package/pi-extension/dist/router-tools.js +438 -0
- package/pi-extension/dist/runtime-context.js +288 -0
- package/pi-extension/dist/schemas.js +254 -0
- package/pi-extension/dist/status.js +449 -0
- package/pi-extension/dist/utils.js +467 -0
- package/pi-extension/src/host-producer-identification.ts +226 -0
- package/pi-extension/src/index.ts +121 -0
- package/pi-extension/src/mcp-config.ts +32 -0
- package/pi-extension/src/native-safety-net.ts +252 -0
- package/pi-extension/src/observed-tool-routing.ts +126 -0
- package/pi-extension/src/renderers.ts +917 -0
- package/pi-extension/src/router-tools.ts +478 -0
- package/pi-extension/src/runtime-context.ts +347 -0
- package/pi-extension/src/schemas.ts +259 -0
- package/pi-extension/src/status.ts +505 -0
- package/pi-extension/src/utils.ts +492 -0
- package/pi-extension/tsconfig.json +16 -0
- package/plugin-docs/README.md +40 -0
- package/plugin-docs/adr/0002-evals-before-hooks.md +17 -0
- package/{plugins/freeflow/docs → plugin-docs}/adr/0003-release-boundary.md +2 -2
- package/plugin-docs/adr/0004-discover-replaces-shallow-discovery-skills.md +26 -0
- package/plugin-docs/adr/README.md +10 -0
- package/plugin-docs/architecture.md +89 -0
- package/plugin-docs/output-router.md +396 -0
- package/plugin-docs/release-evidence.md +77 -0
- package/{plugins/freeflow/docs → plugin-docs}/skills.md +7 -7
- package/{plugins/freeflow/docs → plugin-docs}/workflow.md +4 -4
- package/router/dist/benchmarks/benchmark-harness.d.ts +32 -0
- package/router/dist/benchmarks/benchmark-harness.js +92 -0
- package/router/dist/benchmarks/benchmarks.d.ts +102 -0
- package/router/dist/benchmarks/benchmarks.js +880 -0
- package/router/dist/benchmarks/codex-qa-benchmarks.d.ts +91 -0
- package/router/dist/benchmarks/codex-qa-benchmarks.js +461 -0
- package/router/dist/benchmarks/command-benchmarks.d.ts +128 -0
- package/router/dist/benchmarks/command-benchmarks.js +653 -0
- package/router/dist/benchmarks/context-mode-normalized-benchmarks.d.ts +74 -0
- package/router/dist/benchmarks/context-mode-normalized-benchmarks.js +707 -0
- package/router/dist/benchmarks/context-mode-real-deep-benchmark.d.ts +124 -0
- package/router/dist/benchmarks/context-mode-real-deep-benchmark.js +1295 -0
- package/router/dist/benchmarks/context-saving-baseline.d.ts +54 -0
- package/router/dist/benchmarks/context-saving-baseline.js +439 -0
- package/router/dist/benchmarks/index-benchmarks.d.ts +98 -0
- package/router/dist/benchmarks/index-benchmarks.js +762 -0
- package/router/dist/benchmarks/storage-policy-benchmarks.d.ts +90 -0
- package/router/dist/benchmarks/storage-policy-benchmarks.js +538 -0
- package/router/dist/benchmarks/vault-index-benchmarks.d.ts +47 -0
- package/router/dist/benchmarks/vault-index-benchmarks.js +257 -0
- package/router/dist/config/config.d.ts +96 -0
- package/router/dist/config/config.js +453 -0
- package/router/dist/config/router-contract.d.ts +10 -0
- package/router/dist/config/router-contract.js +54 -0
- package/router/dist/config/schema.d.ts +18 -0
- package/router/dist/config/schema.js +600 -0
- package/router/dist/config/types.d.ts +521 -0
- package/router/dist/config/types.js +30 -0
- package/router/dist/evidence/bounded-evidence.d.ts +40 -0
- package/router/dist/evidence/bounded-evidence.js +310 -0
- package/router/dist/evidence/evidence-range-selector.d.ts +22 -0
- package/router/dist/evidence/evidence-range-selector.js +231 -0
- package/router/dist/evidence/evidence-search.d.ts +25 -0
- package/router/dist/evidence/evidence-search.js +466 -0
- package/router/dist/evidence/evidence.d.ts +38 -0
- package/router/dist/evidence/evidence.js +196 -0
- package/router/dist/evidence/failure-contracts.d.ts +27 -0
- package/router/dist/evidence/failure-contracts.js +160 -0
- package/router/dist/evidence/line-ranges.d.ts +22 -0
- package/router/dist/evidence/line-ranges.js +22 -0
- package/router/dist/experiments/local-index.d.ts +58 -0
- package/router/dist/experiments/local-index.js +562 -0
- package/router/dist/index.d.ts +30 -0
- package/router/dist/index.js +32 -0
- package/router/dist/processing/engine.d.ts +108 -0
- package/router/dist/processing/engine.js +435 -0
- package/router/dist/processing/reducers.d.ts +266 -0
- package/router/dist/processing/reducers.js +1495 -0
- package/router/dist/processing/renderers.d.ts +25 -0
- package/router/dist/processing/renderers.js +186 -0
- package/router/dist/processing/scripts.d.ts +78 -0
- package/router/dist/processing/scripts.js +333 -0
- package/router/dist/repo/repo-traversal.d.ts +18 -0
- package/router/dist/repo/repo-traversal.js +242 -0
- package/router/dist/routing/observed-reducers.d.ts +35 -0
- package/router/dist/routing/observed-reducers.js +647 -0
- package/router/dist/routing/observed-routing.d.ts +17 -0
- package/router/dist/routing/observed-routing.js +377 -0
- package/router/dist/routing/parsers.d.ts +16 -0
- package/router/dist/routing/parsers.js +473 -0
- package/router/dist/routing/run-filters.d.ts +56 -0
- package/router/dist/routing/run-filters.js +230 -0
- package/router/dist/routing/run-reducers.d.ts +30 -0
- package/router/dist/routing/run-reducers.js +110 -0
- package/router/dist/sandbox/adapter-roots.d.ts +38 -0
- package/router/dist/sandbox/adapter-roots.js +64 -0
- package/router/dist/sandbox/eryx-python-adapter.d.ts +9 -0
- package/router/dist/sandbox/eryx-python-adapter.js +797 -0
- package/router/dist/sandbox/jq-wasm-adapter.d.ts +9 -0
- package/router/dist/sandbox/jq-wasm-adapter.js +421 -0
- package/router/dist/sandbox/quickjs-wasi-adapter.d.ts +9 -0
- package/router/dist/sandbox/quickjs-wasi-adapter.js +381 -0
- package/router/dist/sandbox/script-sandbox.d.ts +113 -0
- package/router/dist/sandbox/script-sandbox.js +303 -0
- package/router/dist/setup/script-transform-adapters.d.ts +28 -0
- package/router/dist/setup/script-transform-adapters.js +259 -0
- package/router/dist/tools/batch.d.ts +22 -0
- package/router/dist/tools/batch.js +509 -0
- package/router/dist/tools/run.d.ts +50 -0
- package/router/dist/tools/run.js +1219 -0
- package/router/dist/tools/search.d.ts +44 -0
- package/router/dist/tools/search.js +1205 -0
- package/router/dist/transform/engine.d.ts +143 -0
- package/router/dist/transform/engine.js +1955 -0
- package/router/dist/vault/vault-index.d.ts +106 -0
- package/router/dist/vault/vault-index.js +411 -0
- package/router/dist/vault/vault.d.ts +103 -0
- package/router/dist/vault/vault.js +635 -0
- package/{plugins/freeflow/skills → skills}/commit-work/SKILL.md +17 -16
- package/{plugins/freeflow/skills → skills}/commit-work/references/staging-decisions.md +3 -3
- package/skills/design-for-depth/SKILL.md +90 -0
- package/skills/design-for-depth/references/design-pressure-signals.md +265 -0
- package/skills/design-for-depth/references/software-design-philosophy.md +219 -0
- package/{plugins/freeflow/skills → skills}/diagnose-failure/SKILL.md +6 -1
- package/skills/discover/ARTIFACT-DESTINATIONS.md +58 -0
- package/skills/discover/CHECKPOINTS.md +74 -0
- package/skills/discover/SKILL.md +173 -0
- package/skills/execute-plan/SKILL.md +133 -0
- package/skills/execute-plan/references/execution-map.md +122 -0
- package/{plugins/freeflow/skills → skills}/mode-contract/SKILL.md +10 -5
- package/skills/output-router/SKILL.md +202 -0
- package/skills/output-router/references/safety-policy.md +40 -0
- package/{plugins/freeflow/skills → skills}/review-artifact/SKILL.md +37 -1
- package/{plugins/freeflow/skills → skills}/review-artifact/references/reviewer-prompt.md +14 -2
- package/skills/review-work/SKILL.md +101 -0
- package/{plugins/freeflow/skills → skills}/review-work/references/reviewer-prompt.md +8 -0
- package/skills/setup-freeflow/SKILL.md +106 -0
- package/{plugins/freeflow/skills → skills}/setup-freeflow/references/activation-contract.md +14 -8
- package/{plugins/freeflow/skills → skills}/setup-freeflow/references/host-setup.md +5 -3
- package/skills/setup-freeflow/references/output-router-setup.md +102 -0
- package/{plugins/freeflow/skills → skills}/verify-work/SKILL.md +3 -1
- package/{plugins/freeflow/skills → skills}/workflow/SKILL.md +23 -13
- package/{plugins/freeflow/skills → skills}/workflow/references/workflow-map.md +21 -20
- package/{plugins/freeflow/skills → skills}/write-plan/SKILL.md +9 -1
- package/{plugins/freeflow/skills → skills}/write-skill/SKILL.md +1 -1
- package/{plugins/freeflow/skills → skills}/write-spec/SKILL.md +9 -6
- package/plugins/freeflow/docs/README.md +0 -39
- package/plugins/freeflow/docs/adr/0002-evals-before-hooks.md +0 -17
- package/plugins/freeflow/docs/adr/README.md +0 -7
- package/plugins/freeflow/docs/architecture.md +0 -86
- package/plugins/freeflow/docs/release-evidence.md +0 -49
- package/plugins/freeflow/pi-extension/index.js +0 -250
- package/plugins/freeflow/skills/capture-decisions/SKILL.md +0 -95
- package/plugins/freeflow/skills/capture-decisions/references/destination-guide.md +0 -65
- package/plugins/freeflow/skills/execute-plan/SKILL.md +0 -67
- package/plugins/freeflow/skills/grill-context/SKILL.md +0 -79
- package/plugins/freeflow/skills/grill-context/references/approach-framing.md +0 -52
- package/plugins/freeflow/skills/research-brief/SKILL.md +0 -69
- package/plugins/freeflow/skills/review-work/SKILL.md +0 -73
- package/plugins/freeflow/skills/setup-freeflow/SKILL.md +0 -84
- /package/{plugins/freeflow/assets → assets}/freeflow-plugin-icon-transparent.png +0 -0
- /package/{plugins/freeflow/hooks → hooks}/hooks.json +0 -0
- /package/{plugins/freeflow/docs → plugin-docs}/adr/0001-three-modes.md +0 -0
- /package/{plugins/freeflow/skills → skills}/bypass/SKILL.md +0 -0
- /package/{plugins/freeflow/skills → skills}/diagnose-failure/references/feedback-loop-catalog.md +0 -0
- /package/{plugins/freeflow/skills → skills}/diagnose-failure/references/flaky-and-performance.md +0 -0
- /package/{plugins/freeflow/skills → skills}/evaluate-skill/SKILL.md +0 -0
- /package/{plugins/freeflow/skills → skills}/evaluate-skill/references/eval-patterns.md +0 -0
- /package/{plugins/freeflow/skills → skills}/evaluate-skill/references/grading-priority.md +0 -0
- /package/{plugins/freeflow/skills → skills}/handoff/SKILL.md +0 -0
- /package/{plugins/freeflow/skills → skills}/handoff/references/templates.md +0 -0
- /package/{plugins/freeflow/skills → skills}/interview-gate/SKILL.md +0 -0
- /package/{plugins/freeflow/skills → skills}/write-plan/references/plan-shapes.md +0 -0
- /package/{plugins/freeflow/skills → skills}/write-spec/references/artifact-standards.md +0 -0
- /package/{plugins/freeflow/skills → skills}/write-spec/references/spec-shapes.md +0 -0
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
# Architecture
|
|
2
|
-
|
|
3
|
-
Freeflow is a portable skill pack for coding agents.
|
|
4
|
-
|
|
5
|
-
## Runtime Boundary
|
|
6
|
-
|
|
7
|
-
Freeflow ships Markdown skills, bundled references, lightweight context-loading hooks, and a Pi extension. It does not ship a CLI, Codex/Claude native slash handlers, enforcement hooks, or a new agent runtime in v0.1.
|
|
8
|
-
|
|
9
|
-
Host runtimes still control tools, sandboxing, approvals, and permissions. Freeflow controls workflow pressure:
|
|
10
|
-
|
|
11
|
-
- how much clarification is needed
|
|
12
|
-
- when artifacts are useful
|
|
13
|
-
- when source-truth conflicts stop edits
|
|
14
|
-
- when review and verification are required
|
|
15
|
-
- when a handoff or durable decision is useful
|
|
16
|
-
|
|
17
|
-
## Package Layout
|
|
18
|
-
|
|
19
|
-
```text
|
|
20
|
-
freeflow/
|
|
21
|
-
package.json
|
|
22
|
-
.agents/plugins/marketplace.json
|
|
23
|
-
.claude-plugin/marketplace.json
|
|
24
|
-
README.md
|
|
25
|
-
LICENSE
|
|
26
|
-
CHANGELOG.md
|
|
27
|
-
docs/
|
|
28
|
-
plugins/freeflow/
|
|
29
|
-
.codex-plugin/plugin.json
|
|
30
|
-
.claude-plugin/plugin.json
|
|
31
|
-
command-surface.json
|
|
32
|
-
hooks/
|
|
33
|
-
pi-extension/
|
|
34
|
-
skills/
|
|
35
|
-
docs/
|
|
36
|
-
evals/
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
The repository root is the marketplace and package-facing shell. Codex uses `.agents/plugins/marketplace.json`; Claude uses `.claude-plugin/marketplace.json`. Both point at `plugins/freeflow/`. Pi uses the root `package.json` `pi` manifest to load `plugins/freeflow/skills/` and `plugins/freeflow/pi-extension/index.js`.
|
|
40
|
-
|
|
41
|
-
`plugins/freeflow/` is the single runtime source of truth. Skill edits, bundled references, eval metadata, and command-surface metadata live there to avoid generated package drift.
|
|
42
|
-
|
|
43
|
-
## Progressive Disclosure
|
|
44
|
-
|
|
45
|
-
Each skill keeps its active `SKILL.md` short. Stable details move into `references/` files only when they prevent bloat, reduce repeated work, or address measured failures.
|
|
46
|
-
|
|
47
|
-
This keeps the model's first-loaded instructions focused on behavior:
|
|
48
|
-
|
|
49
|
-
- trigger
|
|
50
|
-
- loop
|
|
51
|
-
- stop condition
|
|
52
|
-
- failure prevention
|
|
53
|
-
|
|
54
|
-
## Host Setup
|
|
55
|
-
|
|
56
|
-
`setup-freeflow` installs a compact always-on contract into the host repo.
|
|
57
|
-
|
|
58
|
-
The canonical setup contract lives in `skills/setup-freeflow/references/activation-contract.md`; setup docs, fixtures, and eval assertions should reference it or be checked against it.
|
|
59
|
-
|
|
60
|
-
Codex setup targets `AGENTS.md` and `.freeflow/config.json`.
|
|
61
|
-
|
|
62
|
-
Claude setup targets `CLAUDE.md`, `.claude/rules/freeflow-core.md`, and `.freeflow/config.json` when Claude is the selected host.
|
|
63
|
-
|
|
64
|
-
Setup should not silently update both hosts or overwrite stronger repo-specific rules. Existing repo instructions are source truth.
|
|
65
|
-
|
|
66
|
-
## Runtime Context Hooks
|
|
67
|
-
|
|
68
|
-
The installed plugin owns `hooks/hooks.json`. Setup does not copy hook files into target repos.
|
|
69
|
-
|
|
70
|
-
The hooks load the existing `workflow` skill, workflow map, and `interview-gate` skill:
|
|
71
|
-
|
|
72
|
-
- at session start, including startup, resume, clear, and compact
|
|
73
|
-
|
|
74
|
-
They also report whether the current repo appears set up, partially set up, or missing setup. They do not run after edit/write tools, block tools, grant permissions, enforce mode policy, or replace repo instructions.
|
|
75
|
-
|
|
76
|
-
Setup handles the same-session case directly: after successful setup verification, it reads the workflow skill, workflow map, and interview-gate skill before its final response and only then says workflow and interview-gate context is loaded.
|
|
77
|
-
|
|
78
|
-
Host runtimes may require plugin hooks to be reviewed and trusted after install. If the host skips untrusted hooks, setup still writes activation/config files, but future session-start runtime context will not load until hooks are trusted and the session is restarted, resumed, cleared, or compacted.
|
|
79
|
-
|
|
80
|
-
Pi uses an extension instead of `hooks/hooks.json`. The Pi extension registers direct commands, reads `workflow/SKILL.md`, `workflow/references/workflow-map.md`, and `interview-gate/SKILL.md`, refreshes that context on `session_start` and `session_compact`, and injects it during Pi's `before_agent_start` lifecycle event. Pi `/workflow` commands set a session-scoped current-mode override, while `.freeflow/config.json` remains the default-mode source. It follows the same boundary as the Codex/Claude hooks: context loading only, no enforcement.
|
|
81
|
-
|
|
82
|
-
## Deferred Enforcement
|
|
83
|
-
|
|
84
|
-
Enforcement hooks and CLI checks are intentionally deferred. They are useful only after skill wording and evals prove a repeated behavior needs mechanical enforcement.
|
|
85
|
-
|
|
86
|
-
For v0.1, commands are model-routed language such as `/write-spec` or `/verify-work`; they are not native registered slash handlers.
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# Release Evidence
|
|
2
|
-
|
|
3
|
-
Freeflow v0.1 is based on local fixture evals and release acceptance runs from the development repository.
|
|
4
|
-
|
|
5
|
-
## Acceptance Summary
|
|
6
|
-
|
|
7
|
-
The local v0.1 acceptance suite passed after measured fixes and was rerun during prepublish verification on 2026-05-26.
|
|
8
|
-
|
|
9
|
-
High-signal behaviors covered:
|
|
10
|
-
|
|
11
|
-
- Source-truth conflicts stop before edits.
|
|
12
|
-
- Strict public API specs ask for owner decisions.
|
|
13
|
-
- Execution stops when verification reveals a bad plan.
|
|
14
|
-
- Commit flow refuses mixed staged sensitive changes.
|
|
15
|
-
- Decision capture asks before inventing memory conventions.
|
|
16
|
-
- Bypass skips ceremony, not judgment.
|
|
17
|
-
|
|
18
|
-
## Command Surface
|
|
19
|
-
|
|
20
|
-
The development registry covers:
|
|
21
|
-
|
|
22
|
-
- 4 mode commands.
|
|
23
|
-
- 13 direct workflow skill calls.
|
|
24
|
-
- 2 contributor skill calls.
|
|
25
|
-
|
|
26
|
-
Codex/Claude native slash handlers are not shipped in v0.1. In those hosts, commands are model-routed through natural language and skill activation. Pi registers direct Freeflow commands through its extension.
|
|
27
|
-
|
|
28
|
-
## Runtime Context
|
|
29
|
-
|
|
30
|
-
Freeflow ships plugin-bundled context hooks that load the existing `workflow` skill, workflow map, and `interview-gate` skill at session start. These hooks do not run after edit/write tools, enforce behavior, block tools, or create repo-local hook files.
|
|
31
|
-
|
|
32
|
-
For the same session that runs setup, `setup-freeflow` reads the workflow skill, workflow map, and interview-gate skill after successful setup verification before saying workflow and interview-gate context is loaded.
|
|
33
|
-
|
|
34
|
-
Host trust prompts for plugin hooks are expected host behavior. Local metadata validation checks hook packaging and deterministic output, not end-to-end host trust UI.
|
|
35
|
-
|
|
36
|
-
## Release Metadata
|
|
37
|
-
|
|
38
|
-
Run `plugins/freeflow/evals/scripts/validate-release-metadata.sh` for local prepublish checks across marketplace metadata, host manifests, command-surface routing, release-boundary docs, package cleanliness, and deferred install-smoke status.
|
|
39
|
-
|
|
40
|
-
Run `plugins/freeflow/evals/scripts/check-runtime-context-hook.sh` after changing lifecycle context hooks.
|
|
41
|
-
|
|
42
|
-
## Known Deferred Work
|
|
43
|
-
|
|
44
|
-
- Live Claude smoke evals after Hassan confirms Claude testing is available again.
|
|
45
|
-
- GitHub-install smoke tests in separate Codex, Claude, and fresh Pi environments.
|
|
46
|
-
- Enforcement hooks or CLI checks only after repeated behavior failures justify them.
|
|
47
|
-
- Public marketplace submission only after GitHub install works for required hosts.
|
|
48
|
-
|
|
49
|
-
Full eval reports are development evidence and are not included in the runtime package.
|
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
import { readFile } from "node:fs/promises";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
|
|
4
|
-
const VALID_MODES = new Set(["conversation", "workflow", "strict-workflow"]);
|
|
5
|
-
|
|
6
|
-
const WORKFLOW_COMMANDS = [
|
|
7
|
-
"grill-context",
|
|
8
|
-
"research-brief",
|
|
9
|
-
"write-spec",
|
|
10
|
-
"review-artifact",
|
|
11
|
-
"write-plan",
|
|
12
|
-
"execute-plan",
|
|
13
|
-
"diagnose-failure",
|
|
14
|
-
"verify-work",
|
|
15
|
-
"review-work",
|
|
16
|
-
"commit-work",
|
|
17
|
-
"capture-decisions",
|
|
18
|
-
"handoff",
|
|
19
|
-
"bypass",
|
|
20
|
-
];
|
|
21
|
-
|
|
22
|
-
const CONTRIBUTOR_COMMANDS = [
|
|
23
|
-
"setup-freeflow",
|
|
24
|
-
"write-skill",
|
|
25
|
-
"evaluate-skill",
|
|
26
|
-
];
|
|
27
|
-
|
|
28
|
-
const MODE_STATE_ENTRY = "freeflow-mode";
|
|
29
|
-
const RESET_MODE_ARGS = new Set(["reset"]);
|
|
30
|
-
|
|
31
|
-
let runtimeContextCache = null;
|
|
32
|
-
let currentModeOverride = null;
|
|
33
|
-
|
|
34
|
-
async function loadRuntimeContext() {
|
|
35
|
-
const [workflowSkill, workflowMap, interviewGateSkill] = await Promise.all([
|
|
36
|
-
readFile(new URL("../skills/workflow/SKILL.md", import.meta.url), "utf8"),
|
|
37
|
-
readFile(new URL("../skills/workflow/references/workflow-map.md", import.meta.url), "utf8"),
|
|
38
|
-
readFile(new URL("../skills/interview-gate/SKILL.md", import.meta.url), "utf8"),
|
|
39
|
-
]);
|
|
40
|
-
|
|
41
|
-
return { workflowSkill, workflowMap, interviewGateSkill };
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
async function refreshRuntimeContext() {
|
|
45
|
-
runtimeContextCache = await loadRuntimeContext();
|
|
46
|
-
return runtimeContextCache;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
async function getRuntimeContext() {
|
|
50
|
-
if (runtimeContextCache) {
|
|
51
|
-
return runtimeContextCache;
|
|
52
|
-
}
|
|
53
|
-
return refreshRuntimeContext();
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
async function readDefaultMode(cwd) {
|
|
57
|
-
try {
|
|
58
|
-
const raw = await readFile(join(cwd, ".freeflow/config.json"), "utf8");
|
|
59
|
-
const parsed = JSON.parse(raw);
|
|
60
|
-
return VALID_MODES.has(parsed.defaultMode) ? parsed.defaultMode : "workflow";
|
|
61
|
-
} catch {
|
|
62
|
-
return "workflow";
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
function restoreModeOverride(ctx) {
|
|
67
|
-
currentModeOverride = null;
|
|
68
|
-
const entries = ctx.sessionManager?.getEntries?.() ?? [];
|
|
69
|
-
|
|
70
|
-
for (const entry of entries) {
|
|
71
|
-
if (entry.type !== "custom" || entry.customType !== MODE_STATE_ENTRY) {
|
|
72
|
-
continue;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
const mode = entry.data?.currentMode;
|
|
76
|
-
currentModeOverride = VALID_MODES.has(mode) ? mode : null;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
async function readModeState(cwd) {
|
|
81
|
-
const defaultMode = await readDefaultMode(cwd);
|
|
82
|
-
const currentMode = VALID_MODES.has(currentModeOverride) ? currentModeOverride : null;
|
|
83
|
-
return {
|
|
84
|
-
defaultMode,
|
|
85
|
-
currentMode,
|
|
86
|
-
effectiveMode: currentMode ?? defaultMode,
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
function setModeStatus(ctx, modeState) {
|
|
91
|
-
ctx.ui.setStatus("freeflow", `freeflow: ${modeState.effectiveMode}`);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
function describeModeState(modeState) {
|
|
95
|
-
if (modeState.currentMode) {
|
|
96
|
-
return `current ${modeState.currentMode}; default ${modeState.defaultMode}`;
|
|
97
|
-
}
|
|
98
|
-
return `default ${modeState.defaultMode}`;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
function skillPrompt(skill, args) {
|
|
102
|
-
const trimmed = args?.trim();
|
|
103
|
-
return trimmed ? `/skill:${skill}\n\n${trimmed}` : `/skill:${skill}`;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
function hasFreeflowActivation(systemPrompt) {
|
|
107
|
-
return (
|
|
108
|
-
systemPrompt.includes("## Loaded Workflow Skill") &&
|
|
109
|
-
systemPrompt.includes("## Loaded Workflow Map") &&
|
|
110
|
-
systemPrompt.includes("## Loaded Interview Gate Skill")
|
|
111
|
-
);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
function runtimeContext(modeState, freeflowContext, alreadyActivated) {
|
|
115
|
-
const currentMode = modeState.currentMode ?? "none";
|
|
116
|
-
|
|
117
|
-
if (alreadyActivated) {
|
|
118
|
-
return `## Freeflow Runtime Context
|
|
119
|
-
|
|
120
|
-
Repo default mode from \`.freeflow/config.json\`: ${modeState.defaultMode}.
|
|
121
|
-
Current session mode override: ${currentMode}.
|
|
122
|
-
Effective Freeflow mode: ${modeState.effectiveMode}.
|
|
123
|
-
|
|
124
|
-
Use the installed Freeflow skills when they match the task. This Pi extension loads context and routes commands only; it does not enforce policy, block tools, grant permissions, or create repo-local hooks.`;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
return `# Freeflow Runtime Context
|
|
128
|
-
|
|
129
|
-
Freeflow Pi extension loaded this before the agent turn.
|
|
130
|
-
These instructions are context-loading only. They do not override user instructions, repo instructions, or host safety and approval policy.
|
|
131
|
-
|
|
132
|
-
## Repo Setup
|
|
133
|
-
|
|
134
|
-
Repo default mode from \`.freeflow/config.json\`: \`${modeState.defaultMode}\`.
|
|
135
|
-
Current session mode override: \`${currentMode}\`.
|
|
136
|
-
Effective Freeflow mode: \`${modeState.effectiveMode}\`.
|
|
137
|
-
Treat the effective mode as the current mode for this agent turn.
|
|
138
|
-
For mode changes or mode interpretation, use \`mode-contract\`.
|
|
139
|
-
Do not announce the current mode on every reply. Mention it when the user asks, setup/config is discussed, or the mode changes the next action.
|
|
140
|
-
|
|
141
|
-
## Loaded Workflow Skill
|
|
142
|
-
|
|
143
|
-
\`\`\`md
|
|
144
|
-
${freeflowContext.workflowSkill.trim()}
|
|
145
|
-
\`\`\`
|
|
146
|
-
|
|
147
|
-
## Loaded Interview Gate Skill
|
|
148
|
-
|
|
149
|
-
\`\`\`md
|
|
150
|
-
${freeflowContext.interviewGateSkill.trim()}
|
|
151
|
-
\`\`\`
|
|
152
|
-
|
|
153
|
-
## Loaded Workflow Map
|
|
154
|
-
|
|
155
|
-
\`\`\`md
|
|
156
|
-
${freeflowContext.workflowMap.trim()}
|
|
157
|
-
\`\`\`
|
|
158
|
-
|
|
159
|
-
This Pi extension loads context and routes commands only; it does not enforce policy, block tools, grant permissions, or create repo-local hooks.`;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
async function handleWorkflowCommand(args, ctx, pi) {
|
|
163
|
-
const arg = args?.trim();
|
|
164
|
-
|
|
165
|
-
if (VALID_MODES.has(arg)) {
|
|
166
|
-
currentModeOverride = arg;
|
|
167
|
-
pi.appendEntry?.(MODE_STATE_ENTRY, { currentMode: arg });
|
|
168
|
-
const modeState = await readModeState(ctx.cwd);
|
|
169
|
-
setModeStatus(ctx, modeState);
|
|
170
|
-
ctx.ui.notify(
|
|
171
|
-
`Freeflow mode is now ${modeState.effectiveMode} for this session. Repo default remains ${modeState.defaultMode}.`,
|
|
172
|
-
"info"
|
|
173
|
-
);
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
if (RESET_MODE_ARGS.has(arg)) {
|
|
178
|
-
currentModeOverride = null;
|
|
179
|
-
pi.appendEntry?.(MODE_STATE_ENTRY, { currentMode: null });
|
|
180
|
-
const modeState = await readModeState(ctx.cwd);
|
|
181
|
-
setModeStatus(ctx, modeState);
|
|
182
|
-
ctx.ui.notify(`Freeflow mode reset to repo default: ${modeState.defaultMode}.`, "info");
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
const modeState = await readModeState(ctx.cwd);
|
|
187
|
-
setModeStatus(ctx, modeState);
|
|
188
|
-
ctx.ui.notify(
|
|
189
|
-
`Freeflow mode is ${modeState.effectiveMode} (${describeModeState(modeState)}). Use /workflow conversation, /workflow workflow, /workflow strict-workflow, or /workflow reset.`,
|
|
190
|
-
"info"
|
|
191
|
-
);
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
export default function freeflow(pi) {
|
|
195
|
-
pi.on("session_start", async (_event, ctx) => {
|
|
196
|
-
restoreModeOverride(ctx);
|
|
197
|
-
const [modeState] = await Promise.all([readModeState(ctx.cwd), refreshRuntimeContext()]);
|
|
198
|
-
setModeStatus(ctx, modeState);
|
|
199
|
-
});
|
|
200
|
-
|
|
201
|
-
pi.on("session_compact", async (_event, ctx) => {
|
|
202
|
-
const [modeState] = await Promise.all([readModeState(ctx.cwd), refreshRuntimeContext()]);
|
|
203
|
-
setModeStatus(ctx, modeState);
|
|
204
|
-
});
|
|
205
|
-
|
|
206
|
-
pi.on("before_agent_start", async (event, ctx) => {
|
|
207
|
-
const [modeState, freeflowContext] = await Promise.all([
|
|
208
|
-
readModeState(ctx.cwd),
|
|
209
|
-
getRuntimeContext(),
|
|
210
|
-
]);
|
|
211
|
-
setModeStatus(ctx, modeState);
|
|
212
|
-
return {
|
|
213
|
-
systemPrompt:
|
|
214
|
-
event.systemPrompt +
|
|
215
|
-
"\n\n" +
|
|
216
|
-
runtimeContext(modeState, freeflowContext, hasFreeflowActivation(event.systemPrompt)),
|
|
217
|
-
};
|
|
218
|
-
});
|
|
219
|
-
|
|
220
|
-
for (const skill of WORKFLOW_COMMANDS) {
|
|
221
|
-
pi.registerCommand(skill, {
|
|
222
|
-
description: `Run Freeflow ${skill}`,
|
|
223
|
-
handler: async (args) => {
|
|
224
|
-
await pi.sendUserMessage(skillPrompt(skill, args));
|
|
225
|
-
},
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
for (const skill of CONTRIBUTOR_COMMANDS) {
|
|
230
|
-
pi.registerCommand(skill, {
|
|
231
|
-
description: `Run Freeflow ${skill}`,
|
|
232
|
-
handler: async (args) => {
|
|
233
|
-
await pi.sendUserMessage(skillPrompt(skill, args));
|
|
234
|
-
},
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
pi.registerCommand("workflow", {
|
|
239
|
-
description: "Set or inspect the current Freeflow session mode",
|
|
240
|
-
getArgumentCompletions: (prefix) => {
|
|
241
|
-
const query = prefix ?? "";
|
|
242
|
-
const values = ["conversation", "workflow", "strict-workflow", "reset"];
|
|
243
|
-
const filtered = values.filter((value) => value.startsWith(query));
|
|
244
|
-
return filtered.map((value) => ({ value, label: value }));
|
|
245
|
-
},
|
|
246
|
-
handler: async (args, ctx) => {
|
|
247
|
-
await handleWorkflowCommand(args, ctx, pi);
|
|
248
|
-
},
|
|
249
|
-
});
|
|
250
|
-
}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: capture-decisions
|
|
3
|
-
description: Capture settled durable decisions into existing owning repo memory, or ask where to record them before creating a destination. Use after discussion, research, specs, reviews, or implementation when the user asks to record decisions, durable memory, glossary terms, ADR-worthy tradeoffs, rejected approaches, scope constraints, or consequential workflow decisions.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Capture Decisions
|
|
7
|
-
|
|
8
|
-
Record settled decisions in the artifact that already owns them. Do not invent memory.
|
|
9
|
-
|
|
10
|
-
A missing `CONTEXT.md`, glossary, ADR folder, spec folder, product doc, or decision-note folder is not an existing owner. Creating one is a destination decision; ask first.
|
|
11
|
-
|
|
12
|
-
## Hard Rules
|
|
13
|
-
|
|
14
|
-
Never put current file lists, volatile repo inventory, temporary TODOs, command output, or implementation task lists in durable decision memory.
|
|
15
|
-
|
|
16
|
-
If the user asks to include them, say they were omitted as volatile context. Do not reproduce the list in the decision note or final response. Offer a handoff or plan if they need execution state.
|
|
17
|
-
|
|
18
|
-
Direct `/capture-decisions`, "explicit permission", "capture everything", "create an ADR", or "full durable memory record" does not override destination classification, the ADR test, or volatile-context omission.
|
|
19
|
-
|
|
20
|
-
Do not create an ADR only because the prompt asks for one. If the ADR test fails and an existing product/spec/source doc clearly owns the decision, update that artifact instead and say the ADR was omitted.
|
|
21
|
-
|
|
22
|
-
If the user asks whether something should be captured, answer first. Do not create files unless asked.
|
|
23
|
-
|
|
24
|
-
If the user asks for durable memory but does not name the target artifact or path, inspect existing conventions first. Use a clear existing owner for that decision type. Ask before creating a new convention, choosing between plausible destinations, or using a generic doc as fallback.
|
|
25
|
-
|
|
26
|
-
An existing plausible doc is evidence, not blanket approval. `docs/product.md`, `CONTEXT.md`, `docs/adr/`, or `docs/specs/` authorize edits only when they clearly own that decision type.
|
|
27
|
-
|
|
28
|
-
Do not use `README.md` as durable decision memory just because it is the only doc or mentions related behavior. Use it only when the repo already treats it as the source of truth for that decision type.
|
|
29
|
-
|
|
30
|
-
If an existing doc says there is no durable decision convention, treat that as blocking evidence. Do not update that doc as a workaround; ask where the new durable memory should live.
|
|
31
|
-
|
|
32
|
-
Read `references/destination-guide.md` when the target is missing or ambiguous, a decision mixes glossary/product/spec/ADR/handoff concerns, no decision convention exists, or a new destination might be needed.
|
|
33
|
-
|
|
34
|
-
When stopping for a missing or ambiguous destination, end with one direct destination question. Name the recommended target and the decisions it would capture. A recommendation without a question is not enough.
|
|
35
|
-
|
|
36
|
-
## Classify
|
|
37
|
-
|
|
38
|
-
Before writing, decide the destination:
|
|
39
|
-
|
|
40
|
-
- Glossary term or domain meaning -> existing `CONTEXT.md`, glossary, or domain doc. If none exists, ask.
|
|
41
|
-
- Hard-to-reverse, surprising tradeoff -> ADR.
|
|
42
|
-
- Product, scope, compatibility, or workflow decision -> decision note.
|
|
43
|
-
- Requirements for future build -> spec.
|
|
44
|
-
- Immediate continuation state -> handoff.
|
|
45
|
-
|
|
46
|
-
If no durable value exists, say so and do not write.
|
|
47
|
-
|
|
48
|
-
Creating a new decision-note convention is a destination decision. If the repo has no existing decision-note convention, ask before creating `docs/decisions/`.
|
|
49
|
-
|
|
50
|
-
If no existing artifact clearly owns the decision, ask before writing. If more than one destination could fit, ask before writing. This includes choosing between an existing product/spec doc, a new decision note, a glossary, README, or an ADR.
|
|
51
|
-
|
|
52
|
-
## ADR Test
|
|
53
|
-
|
|
54
|
-
Use an ADR only when all are true:
|
|
55
|
-
|
|
56
|
-
- Hard to reverse.
|
|
57
|
-
- Surprising without context.
|
|
58
|
-
- Chosen from real alternatives.
|
|
59
|
-
|
|
60
|
-
Otherwise use a lighter decision note or update the relevant existing artifact.
|
|
61
|
-
|
|
62
|
-
## Write Shape
|
|
63
|
-
|
|
64
|
-
When creating a durable decision artifact, follow the compact identity guidance in `../write-spec/references/artifact-standards.md` if future agents or teammates will rely on it.
|
|
65
|
-
|
|
66
|
-
Keep decision notes short:
|
|
67
|
-
|
|
68
|
-
```text
|
|
69
|
-
# Decision: ...
|
|
70
|
-
|
|
71
|
-
Date: ...
|
|
72
|
-
|
|
73
|
-
## Decision
|
|
74
|
-
...
|
|
75
|
-
|
|
76
|
-
## Rationale
|
|
77
|
-
...
|
|
78
|
-
|
|
79
|
-
## Consequences
|
|
80
|
-
...
|
|
81
|
-
|
|
82
|
-
## Not Captured
|
|
83
|
-
...
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
Link to live evidence. Do not duplicate volatile facts.
|
|
87
|
-
|
|
88
|
-
## Stop Conditions
|
|
89
|
-
|
|
90
|
-
Stop and ask before writing when:
|
|
91
|
-
|
|
92
|
-
- The decision is not actually settled.
|
|
93
|
-
- The destination is ambiguous.
|
|
94
|
-
- Capturing would change product, scope, policy, ADRs, specs, or source truth.
|
|
95
|
-
- The user asks for memory but not its durability or location.
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
# Destination Guide
|
|
2
|
-
|
|
3
|
-
Use this when the durable-memory destination is not obvious.
|
|
4
|
-
|
|
5
|
-
## Destination Test
|
|
6
|
-
|
|
7
|
-
Before writing, answer:
|
|
8
|
-
|
|
9
|
-
- What settled decision is being recorded?
|
|
10
|
-
- Which existing artifact is already the source of truth for that kind of decision?
|
|
11
|
-
- Would this edit create a new documentation convention or source of truth?
|
|
12
|
-
- Would a future agent treat the target as authority for this decision?
|
|
13
|
-
|
|
14
|
-
If the owner is unclear, ask before writing.
|
|
15
|
-
|
|
16
|
-
## Common Destinations
|
|
17
|
-
|
|
18
|
-
| Decision type | Prefer | Do not use |
|
|
19
|
-
| --- | --- | --- |
|
|
20
|
-
| Domain term or glossary meaning | Existing `CONTEXT.md`, glossary, or domain doc; otherwise ask | README as a fallback glossary; creating `CONTEXT.md` without asking |
|
|
21
|
-
| Product behavior, scope, compatibility, billing, privacy, or policy | Existing product/spec/policy doc; otherwise ask where to capture | ADR unless the ADR test passes |
|
|
22
|
-
| Hard-to-reverse, surprising tradeoff chosen from alternatives | ADR | Product notes for architecture that needs rationale |
|
|
23
|
-
| Future build requirements | Existing or requested spec | Handoff or decision note as a hidden spec |
|
|
24
|
-
| Immediate continuation state, next steps, file inventory, commands, partial progress | Handoff or plan | Durable decision memory |
|
|
25
|
-
| Rejected approach | ADR if tradeoff-heavy; otherwise decision note or relevant spec section | Changelog or README by default |
|
|
26
|
-
| Workflow/process convention | Existing agent/process doc | New global standard without asking |
|
|
27
|
-
|
|
28
|
-
## Ambiguity Rules
|
|
29
|
-
|
|
30
|
-
- No destination convention means ask; it does not authorize `docs/decisions/`.
|
|
31
|
-
- A missing `CONTEXT.md`, glossary, ADR directory, spec directory, product doc, or decision-note folder is not a destination convention.
|
|
32
|
-
- The only existing doc is not automatically the right doc.
|
|
33
|
-
- `README.md` is a project overview unless the repo clearly treats it as the authoritative product/domain/process source.
|
|
34
|
-
- If `README.md` or another doc says there is no durable decision convention, do not edit it to create one implicitly.
|
|
35
|
-
- `CONTEXT.md` is for stable project language and domain meaning, not implementation summaries or task state.
|
|
36
|
-
- Handoffs preserve continuation memory. They are not authority for product, policy, or architecture.
|
|
37
|
-
|
|
38
|
-
Ask one focused question and recommend the narrowest durable destination supported by the repo. The final sentence should be the question, for example: `Should I create CONTEXT.md to record the RiskReview domain term and the automated retry scheduling scope boundary?`
|
|
39
|
-
|
|
40
|
-
## Decision Artifact Shape
|
|
41
|
-
|
|
42
|
-
For a new durable decision artifact, use the compact identity guidance in `../../write-spec/references/artifact-standards.md` when the artifact is team-facing, strict-workflow, or future-agent-facing.
|
|
43
|
-
|
|
44
|
-
Keep the note short:
|
|
45
|
-
|
|
46
|
-
```md
|
|
47
|
-
# Decision: ...
|
|
48
|
-
|
|
49
|
-
> **Doc ID:** DEC-001-short-slug
|
|
50
|
-
> **Date:** 2026-05-26
|
|
51
|
-
> **Owner:** User
|
|
52
|
-
> **Type:** Decision
|
|
53
|
-
> **Status:** Accepted
|
|
54
|
-
> **Source:** User-provided decision session
|
|
55
|
-
|
|
56
|
-
## Decision
|
|
57
|
-
|
|
58
|
-
## Rationale
|
|
59
|
-
|
|
60
|
-
## Consequences
|
|
61
|
-
|
|
62
|
-
## Not Captured
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
Do not add a changelog on first creation.
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: execute-plan
|
|
3
|
-
description: Use when implementing an approved plan or executing planned work against a repo, especially when a planned verification command fails or reveals a plan/source conflict. Use when the user says to execute, implement, follow, or carry out a plan.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Execute Plan
|
|
7
|
-
|
|
8
|
-
Execute the plan. Do not improve it silently.
|
|
9
|
-
|
|
10
|
-
Classify first:
|
|
11
|
-
|
|
12
|
-
- Valid plan: inspect source context, execute the next slice, verify it.
|
|
13
|
-
- Plan/source conflict: stop and ask which source should change.
|
|
14
|
-
- Hidden owner decision: stop and ask.
|
|
15
|
-
- Missing verification: stop before consequential edits and ask to revise the plan or approve a diagnostic path.
|
|
16
|
-
- Missing plan: ask for a plan or route to `write-plan`.
|
|
17
|
-
|
|
18
|
-
The plan is instructions, not authority.
|
|
19
|
-
|
|
20
|
-
## Before Editing
|
|
21
|
-
|
|
22
|
-
Read:
|
|
23
|
-
|
|
24
|
-
- The plan.
|
|
25
|
-
- The source spec or requirements the plan cites.
|
|
26
|
-
- Relevant docs, tests, policies, ADRs, and code.
|
|
27
|
-
- Handoffs only as memory.
|
|
28
|
-
|
|
29
|
-
Live repo evidence overrides stale plans and handoffs.
|
|
30
|
-
|
|
31
|
-
Do not execute a plan that would:
|
|
32
|
-
|
|
33
|
-
- Invent or change product behavior, scope, domain meaning, compatibility, public API behavior, security, privacy, billing, data-loss, or architecture.
|
|
34
|
-
- Override docs, tests, specs, policies, ADRs, or established behavior.
|
|
35
|
-
- Treat "do not ask", "just execute", "latest context", or "handoff says" as conflict approval.
|
|
36
|
-
- Skip verification for consequential behavior.
|
|
37
|
-
- Rewrite a verification script, test, source-truth doc, policy, or spec to make the plan pass unless the plan explicitly authorized that artifact change and it matches source truth.
|
|
38
|
-
|
|
39
|
-
Name the conflict or missing decision. Ask which path to follow. Recommend the path supported by evidence.
|
|
40
|
-
|
|
41
|
-
For source-truth conflicts or missing verification, the final line must be a direct choice question.
|
|
42
|
-
|
|
43
|
-
For missing verification, ask whether to revise the plan to add a check or approve a specific verification path.
|
|
44
|
-
|
|
45
|
-
## Execute
|
|
46
|
-
|
|
47
|
-
Work in vertical slices.
|
|
48
|
-
|
|
49
|
-
For each slice:
|
|
50
|
-
|
|
51
|
-
- Make only the edits needed for that slice.
|
|
52
|
-
- Run the planned check or the smallest equivalent check.
|
|
53
|
-
- If the check fails, stop and report the evidence before changing direction.
|
|
54
|
-
- If new evidence invalidates the plan, stop before patching forward.
|
|
55
|
-
|
|
56
|
-
After a planned verification command fails, do not edit the verifier, tests, docs, policy, source-truth files, or unrelated code to make it pass. This is true even when the verifier appears wrong and even when the user said to "fix whatever is needed". A bad verifier is a plan defect; stop, report the failing command and conflicting evidence, and ask whether to revise the plan or change the source truth.
|
|
57
|
-
|
|
58
|
-
Local reversible implementation details can be chosen from repo conventions.
|
|
59
|
-
|
|
60
|
-
## Completion
|
|
61
|
-
|
|
62
|
-
Report:
|
|
63
|
-
|
|
64
|
-
- What changed.
|
|
65
|
-
- What was verified.
|
|
66
|
-
- What remains unverified.
|
|
67
|
-
- Any blocked decisions or plan changes needed.
|