pi-evalset-lab 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +59 -1
  3. package/examples/evalset-compare-sample-embedded.html +142 -0
  4. package/examples/evalset-compare-sample.png +0 -0
  5. package/package.json +38 -6
  6. package/scripts/export-evalset-report-html.mjs +356 -0
  7. package/.copier-answers.yml +0 -5
  8. package/.githooks/pre-commit +0 -12
  9. package/.github/CODEOWNERS +0 -12
  10. package/.github/ISSUE_TEMPLATE/bug-report.yml +0 -63
  11. package/.github/ISSUE_TEMPLATE/config.yml +0 -5
  12. package/.github/ISSUE_TEMPLATE/docs.yml +0 -39
  13. package/.github/ISSUE_TEMPLATE/feature-request.yml +0 -41
  14. package/.github/VOUCHED.td +0 -8
  15. package/.github/dependabot.yml +0 -13
  16. package/.github/pull_request_template.md +0 -34
  17. package/.github/workflows/ci.yml +0 -37
  18. package/.github/workflows/publish.yml +0 -60
  19. package/.github/workflows/release-please.yml +0 -25
  20. package/.github/workflows/vouch-check-pr.yml +0 -29
  21. package/.github/workflows/vouch-manage.yml +0 -34
  22. package/.pi/extensions/startup-intake-router.ts +0 -151
  23. package/.pi/prompts/init-project-docs.md +0 -32
  24. package/.release-please-config.json +0 -11
  25. package/.release-please-manifest.json +0 -3
  26. package/AGENTS.md +0 -39
  27. package/CODE_OF_CONDUCT.md +0 -50
  28. package/CONTRIBUTING.md +0 -28
  29. package/NEXT_SESSION_PROMPT.md +0 -14
  30. package/SECURITY.md +0 -34
  31. package/SUPPORT.md +0 -37
  32. package/docs/dev/CONTRIBUTING.md +0 -37
  33. package/docs/dev/EXTENSION_SOP.md +0 -43
  34. package/docs/dev/next_steps.md +0 -17
  35. package/docs/dev/plans/001-initial-plan.md +0 -24
  36. package/docs/dev/status.md +0 -21
  37. package/docs/org/operating_model.md +0 -39
  38. package/docs/org/project-docs-intake.questions.json +0 -60
  39. package/docs/project/foundation.md +0 -28
  40. package/docs/project/incentives.md +0 -17
  41. package/docs/project/resources.md +0 -26
  42. package/docs/project/skills.md +0 -17
  43. package/docs/project/strategic_goals.md +0 -18
  44. package/docs/project/tactical_goals.md +0 -39
  45. package/docs/project/vision.md +0 -21
  46. package/external/.gitkeep +0 -0
  47. package/ontology/.gitkeep +0 -0
  48. package/policy/security-policy.json +0 -10
  49. package/prek.toml +0 -15
  50. package/scripts/docs-list.sh +0 -50
  51. package/scripts/init-project-docs.sh +0 -56
  52. package/scripts/install-hooks.sh +0 -13
  53. package/scripts/sync-to-live.sh +0 -91
  54. package/scripts/validate-structure.sh +0 -325
  55. package/src/.gitkeep +0 -0
  56. package/tests/.gitkeep +0 -0
@@ -1,60 +0,0 @@
1
- name: publish
2
-
3
- on:
4
- release:
5
- types:
6
- - published
7
-
8
- permissions:
9
- contents: read
10
-
11
- jobs:
12
- publish-npm:
13
- if: startsWith(github.event.release.tag_name, 'v')
14
- runs-on: ubuntu-latest
15
- environment: npm-publish
16
- permissions:
17
- contents: read
18
- id-token: write
19
- steps:
20
- - name: Checkout
21
- uses: actions/checkout@v6
22
-
23
- - name: Setup Node.js
24
- uses: actions/setup-node@v6
25
- with:
26
- node-version: "22"
27
- registry-url: https://registry.npmjs.org
28
-
29
- - name: Upgrade npm for trusted publishing
30
- run: npm install --global npm@^11.5.1
31
-
32
- - name: Validate release tag + package version
33
- env:
34
- TAG_NAME: ${{ github.event.release.tag_name }}
35
- run: |
36
- if [[ ! "$TAG_NAME" =~ ^v[0-9]+\.[0-9]+\.[0-9]+([-.][0-9A-Za-z.]+)?$ ]]; then
37
- echo "Release tag must match vX.Y.Z (optional prerelease/build suffix)." >&2
38
- exit 1
39
- fi
40
-
41
- PKG_VERSION="$(node -p "JSON.parse(require('node:fs').readFileSync('package.json', 'utf8')).version")"
42
- if [[ "v${PKG_VERSION}" != "$TAG_NAME" ]]; then
43
- echo "package.json version (${PKG_VERSION}) does not match release tag (${TAG_NAME})." >&2
44
- exit 1
45
- fi
46
-
47
- - name: Install dependencies
48
- run: |
49
- if [[ -f package-lock.json ]]; then
50
- npm ci
51
- else
52
- npm install --package-lock-only --ignore-scripts
53
- npm ci
54
- fi
55
-
56
- - name: Validate structure
57
- run: npm run check
58
-
59
- - name: Publish to npm (OIDC + provenance)
60
- run: npm publish --provenance --access public
@@ -1,25 +0,0 @@
1
- name: release-please
2
-
3
- on:
4
- push:
5
- branches:
6
- - main
7
- workflow_dispatch:
8
-
9
- permissions:
10
- contents: read
11
- pull-requests: read
12
-
13
- jobs:
14
- release-please:
15
- runs-on: ubuntu-latest
16
- permissions:
17
- contents: write
18
- pull-requests: write
19
- issues: write
20
- steps:
21
- - name: Run release-please
22
- uses: googleapis/release-please-action@16a9c90856f42705d54a6fda1823352bdc62cf38 # v4.4.0
23
- with:
24
- config-file: .release-please-config.json
25
- manifest-file: .release-please-manifest.json
@@ -1,29 +0,0 @@
1
- name: vouch-check-pr
2
-
3
- on:
4
- pull_request_target:
5
- types:
6
- - opened
7
- - reopened
8
-
9
- permissions:
10
- contents: read
11
-
12
- jobs:
13
- check:
14
- runs-on: ubuntu-latest
15
- permissions:
16
- contents: read
17
- pull-requests: write
18
- steps:
19
- - name: Enforce vouch trust gate on PR author
20
- # require-vouch=true: unvouched users are treated as blocked.
21
- # auto-close=true: blocked PRs are automatically closed.
22
- uses: mitchellh/vouch/action/check-pr@0e11a71bba23218a284d3ecca162e75a110fd7e3
23
- with:
24
- pr-number: ${{ github.event.pull_request.number }}
25
- vouched-file: .github/VOUCHED.td
26
- require-vouch: "true"
27
- auto-close: "true"
28
- env:
29
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -1,34 +0,0 @@
1
- name: vouch-manage
2
-
3
- on:
4
- issue_comment:
5
- types:
6
- - created
7
-
8
- concurrency:
9
- group: vouch-manage-${{ github.repository }}
10
- cancel-in-progress: false
11
-
12
- permissions:
13
- contents: read
14
-
15
- jobs:
16
- manage:
17
- runs-on: ubuntu-latest
18
- permissions:
19
- contents: write
20
- issues: write
21
- pull-requests: read
22
- steps:
23
- - name: Checkout repository
24
- uses: actions/checkout@v6
25
-
26
- - name: Apply vouch / denounce / unvouch from maintainer comments
27
- uses: mitchellh/vouch/action/manage-by-issue@0e11a71bba23218a284d3ecca162e75a110fd7e3
28
- with:
29
- repo: ${{ github.repository }}
30
- issue-id: ${{ github.event.issue.number }}
31
- comment-id: ${{ github.event.comment.id }}
32
- vouched-file: .github/VOUCHED.td
33
- env:
34
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -1,151 +0,0 @@
1
- import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
2
-
3
- const WORKFLOW_VERSION = "startup-intake-v1";
4
- const STATE_ENTRY = "startup-intake-router-state";
5
-
6
- type RouterPhase = "idle" | "intent_captured" | "command_proposed";
7
-
8
- interface RouterState {
9
- workflowVersion: string;
10
- phase: RouterPhase;
11
- firstMessageProcessed: boolean;
12
- intent?: string;
13
- command?: string;
14
- updatedAt: number;
15
- }
16
-
17
- function newState(overrides: Partial<RouterState> = {}): RouterState {
18
- return {
19
- workflowVersion: WORKFLOW_VERSION,
20
- phase: "idle",
21
- firstMessageProcessed: false,
22
- updatedAt: Date.now(),
23
- ...overrides,
24
- };
25
- }
26
-
27
- function normalizeInline(value: string, maxLen = 1200): string {
28
- const compact = value.replace(/\s+/g, " ").trim();
29
- if (compact.length <= maxLen) return compact;
30
- return compact.slice(0, maxLen - 1) + "…";
31
- }
32
-
33
- function quoteArg(value: string): string {
34
- return JSON.stringify(value);
35
- }
36
-
37
- function formatCommand(name: string, args: string[]): string {
38
- return `/${name} ${args.map((arg) => quoteArg(arg)).join(" ")}`;
39
- }
40
-
41
- export default function startupIntakeRouter(pi: ExtensionAPI) {
42
- let state = newState();
43
-
44
- const persist = () => {
45
- state.updatedAt = Date.now();
46
- pi.appendEntry(STATE_ENTRY, state);
47
- };
48
-
49
- const setState = (patch: Partial<RouterState>, save = true) => {
50
- state = { ...state, ...patch, workflowVersion: WORKFLOW_VERSION };
51
- if (save) persist();
52
- };
53
-
54
- const restore = (ctx: any) => {
55
- const branch = ctx.sessionManager.getBranch();
56
- let restored: RouterState | undefined;
57
-
58
- for (const entry of branch) {
59
- if (entry.type === "custom" && entry.customType === STATE_ENTRY && entry.data && typeof entry.data === "object") {
60
- restored = entry.data as RouterState;
61
- }
62
- }
63
-
64
- state = restored ? { ...newState(), ...restored, workflowVersion: WORKFLOW_VERSION } : newState();
65
- setState({
66
- firstMessageProcessed: false,
67
- phase: "idle",
68
- intent: undefined,
69
- command: undefined,
70
- });
71
- };
72
-
73
- const prefill = (ctx: any, command: string, notice: string) => {
74
- if (!ctx.hasUI) return;
75
- ctx.ui.setEditorText(command);
76
- ctx.ui.notify(notice, "info");
77
- };
78
-
79
- pi.on("session_start", async (_event, ctx) => {
80
- restore(ctx);
81
- if (ctx.hasUI) {
82
- ctx.ui.setStatus("startup-intake", "ready (first-message intake)");
83
- }
84
- });
85
-
86
- pi.on("session_switch", async (_event, ctx) => {
87
- restore(ctx);
88
- });
89
-
90
- pi.on("input", async (event, ctx) => {
91
- if (event.source === "extension") return { action: "continue" as const };
92
- if (!ctx.hasUI) return { action: "continue" as const };
93
- if (state.firstMessageProcessed) return { action: "continue" as const };
94
-
95
- const text = event.text.trim();
96
- if (!text) return { action: "continue" as const };
97
-
98
- if (text.startsWith("/")) {
99
- // Utility commands should not consume first-message intake.
100
- return { action: "continue" as const };
101
- }
102
-
103
- setState({ firstMessageProcessed: true, phase: "intent_captured" });
104
-
105
- const intent = normalizeInline(text, 1200);
106
- const command = formatCommand("init-project-docs", [intent]);
107
-
108
- setState({
109
- intent,
110
- command,
111
- phase: "command_proposed",
112
- });
113
-
114
- prefill(
115
- ctx,
116
- command,
117
- "Startup intent captured. Review/edit and run the command to launch interview-first project doc setup.",
118
- );
119
- ctx.ui.setStatus("startup-intake", "init-project-docs command ready");
120
-
121
- return { action: "handled" as const };
122
- });
123
-
124
- pi.registerCommand("startup-intake-router-status", {
125
- description: "Show startup intake router state",
126
- handler: async (_args, ctx) => {
127
- if (!ctx.hasUI) return;
128
-
129
- const summary = [
130
- `phase: ${state.phase}`,
131
- `first_message_processed: ${state.firstMessageProcessed ? "yes" : "no"}`,
132
- `intent: ${state.intent ?? "<none>"}`,
133
- `command: ${state.command ?? "<none>"}`,
134
- `updated_at: ${new Date(state.updatedAt).toISOString()}`,
135
- ];
136
- ctx.ui.notify(summary.join(" | "), "info");
137
- },
138
- });
139
-
140
- pi.registerCommand("startup-intake-router-reset", {
141
- description: "Reset startup intake router state for this session",
142
- handler: async (_args, ctx) => {
143
- state = newState();
144
- persist();
145
- if (ctx.hasUI) {
146
- ctx.ui.setStatus("startup-intake", "ready (reset)");
147
- ctx.ui.notify("Startup intake router reset. Next non-command message will propose /init-project-docs.", "info");
148
- }
149
- },
150
- });
151
- }
@@ -1,32 +0,0 @@
1
- ---
2
- description: Run interview-first initialization for organization and project docs
3
- system4d:
4
- container: "Project-local prompt template for startup interview flow."
5
- compass: "Route startup intent into interview-driven document setup."
6
- engine: "Intent -> interview -> synthesize -> update docs -> verify."
7
- fog: "If interview data is incomplete, docs may remain ambiguous."
8
- ---
9
-
10
- Initialize organization and project docs from interactive intake.
11
-
12
- Startup intent (if provided): $@
13
-
14
- Steps:
15
- 1. Read `docs/org/project-docs-intake.questions.json`.
16
- 2. If startup intent is non-empty, create `docs/org/project-docs-intake.runtime.questions.json` with one prepended question:
17
- - `id`: `startup_intent_confirmation`
18
- - `type`: `text`
19
- - `question`: `Startup intent captured: <startup intent>. Confirm or refine this intent before continuing.`
20
- 3. Run the `interview` tool:
21
- - `questions`: runtime file from step 2 if created, otherwise `docs/org/project-docs-intake.questions.json`
22
- - `timeout`: `900`
23
- 4. Use interview responses to update these files:
24
- - `docs/org/operating_model.md`
25
- - `docs/project/foundation.md`
26
- - `docs/project/vision.md`
27
- - `docs/project/strategic_goals.md`
28
- - `docs/project/tactical_goals.md`
29
- 5. Keep wording fully in English.
30
- 6. Keep **organization purpose** separate from **project purpose**.
31
- 7. Keep output compact.
32
- 8. Run `bash ./scripts/validate-structure.sh`.
@@ -1,11 +0,0 @@
1
- {
2
- "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
3
- "release-type": "node",
4
- "include-v-in-tag": true,
5
- "include-component-in-tag": false,
6
- "packages": {
7
- ".": {
8
- "release-type": "node"
9
- }
10
- }
11
- }
@@ -1,3 +0,0 @@
1
- {
2
- ".": "0.1.0"
3
- }
package/AGENTS.md DELETED
@@ -1,39 +0,0 @@
1
- ---
2
- summary: "Agent operating guardrails for this repository."
3
- read_when:
4
- - "Before an agent edits code or docs in this repository."
5
- system4d:
6
- container: "Local repo rules for coding agents."
7
- compass: "Small diffs, clear validation, no silent assumptions."
8
- engine: "Read docs -> implement -> validate -> summarize."
9
- fog: "Task ambiguity resolved by asking concise clarifying questions."
10
- ---
11
-
12
- # AGENTS.md
13
-
14
- ## Defaults
15
-
16
- - Keep changes reviewable and scoped.
17
- - Prefer `read` before edits.
18
- - Prefer markdown links like `[text](path)`.
19
- - Avoid destructive git/file ops unless explicitly requested.
20
-
21
- ## Docs workflow
22
-
23
- - Run `npm run docs:list` at task start to surface docs and `read_when` hints.
24
- - Use `npm run docs:list:workspace` for workspace/monorepo scans.
25
- - If your docs-list script is not at `~/ai-society/core/agent-scripts/scripts/docs-list.mjs`, set `DOCS_LIST_SCRIPT`.
26
-
27
- ## Validation
28
-
29
- - Run `npm run check` after structural/documentation changes.
30
-
31
- ## Copier policy
32
-
33
- - Keep `.copier-answers.yml` tracked.
34
- - Do not manually edit `.copier-answers.yml`.
35
- - Run update/recopy from a clean destination repo (commit or stash pending changes first).
36
- - Use `copier update --trust` when `.copier-answers.yml` includes `_commit` and update is supported.
37
- - In non-interactive shells/CI, append `--defaults` to update/recopy.
38
- - Use `copier recopy --trust` when update is unavailable (for example local non-VCS source) or cannot reconcile cleanly.
39
- - After recopy, re-apply local deltas intentionally and run `npm run check`.
@@ -1,50 +0,0 @@
1
- ---
2
- summary: "Community behavior expectations and enforcement path."
3
- read_when:
4
- - "Participating in issues, discussions, or pull requests."
5
- - "Handling conduct incidents."
6
- system4d:
7
- container: "Shared standards for respectful collaboration."
8
- compass: "Safety, respect, and clarity over conflict escalation."
9
- engine: "Observe -> report -> review -> enforce -> document."
10
- fog: "Context around incidents can be incomplete at first report."
11
- ---
12
-
13
- # Code of Conduct
14
-
15
- ## Our commitment
16
-
17
- We want this repository to be a respectful, harassment-free space for everyone,
18
- regardless of background or identity.
19
-
20
- ## Expected behavior
21
-
22
- - Be respectful and constructive.
23
- - Assume good intent, ask clarifying questions, and stay technical.
24
- - Accept feedback and correct mistakes quickly.
25
- - Keep discussions focused on project outcomes.
26
-
27
- ## Unacceptable behavior
28
-
29
- - Harassment, threats, hate speech, or intimidation.
30
- - Personal attacks, repeated hostile behavior, or trolling.
31
- - Sharing private information without consent.
32
- - Sexualized language or unwanted attention.
33
-
34
- ## Reporting incidents
35
-
36
- If you experience or witness unacceptable behavior:
37
-
38
- 1. Contact maintainers privately using the channels listed in [SUPPORT.md](SUPPORT.md).
39
- 2. Share relevant links/screenshots and timeline details.
40
- 3. Do not post sensitive personal data publicly.
41
-
42
- ## Enforcement
43
-
44
- Maintainers may remove or edit comments, close threads, or block contributors for
45
- behavior that violates this policy. Responses may include warning, temporary ban,
46
- or permanent ban depending on severity and repetition.
47
-
48
- ## Attribution
49
-
50
- Adapted from the [Contributor Covenant](https://www.contributor-covenant.org/version/2/0/code_of_conduct.html).
package/CONTRIBUTING.md DELETED
@@ -1,28 +0,0 @@
1
- ---
2
- summary: "Top-level contribution entrypoint linking to the detailed contributor guide."
3
- read_when:
4
- - "Preparing to submit code or docs changes."
5
- - "Looking for contribution quality gates."
6
- system4d:
7
- container: "Contribution intake and quality policy."
8
- compass: "Small, reviewable, verified changes."
9
- engine: "Read guide -> implement -> validate -> open PR."
10
- fog: "Project-specific constraints may evolve with release policy changes."
11
- ---
12
-
13
- # Contributing
14
-
15
- Primary contributor guide: [docs/dev/CONTRIBUTING.md](docs/dev/CONTRIBUTING.md)
16
-
17
- ## Minimum checklist
18
-
19
- 1. Read applicable docs (`npm run docs:list`).
20
- 2. Keep changes scoped.
21
- 3. Run `npm run check`.
22
- 4. Update docs/changelog when behavior changes.
23
- 5. Open a PR with validation output.
24
-
25
- ## Conduct + support
26
-
27
- - [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)
28
- - [SUPPORT.md](SUPPORT.md)
@@ -1,14 +0,0 @@
1
- ---
2
- summary: "Session handoff prompt for pi-evalset-lab."
3
- read_when:
4
- - "Starting the next focused development session."
5
- system4d:
6
- container: "Session handoff artifact."
7
- compass: "Resume work quickly with explicit priorities."
8
- engine: "Capture context, constraints, and next actions."
9
- fog: "Staleness risk if not updated after major changes."
10
- ---
11
-
12
- # Next session prompt for pi-evalset-lab
13
-
14
- Use this file to capture exact follow-up tasks for the next coding session.
package/SECURITY.md DELETED
@@ -1,34 +0,0 @@
1
- ---
2
- summary: "Security reporting process and release hardening baseline."
3
- read_when:
4
- - "Reporting a vulnerability."
5
- - "Reviewing release and workflow security controls."
6
- system4d:
7
- container: "Security policy for maintainers and contributors."
8
- compass: "Private reporting, least privilege, auditable releases."
9
- engine: "Report privately -> triage -> patch -> verify -> disclose."
10
- fog: "Dependency and ecosystem risk shifts over time."
11
- ---
12
-
13
- # Security Policy
14
-
15
- ## Supported versions
16
-
17
- Security fixes target the latest release and `main` branch.
18
-
19
- ## Reporting a vulnerability
20
-
21
- Use **private reporting**.
22
-
23
- 1. Preferred: GitHub Security tab -> **Report a vulnerability**.
24
- 2. If private reporting is unavailable, open a minimal issue titled
25
- `Security contact request` without exploit details and request a private channel.
26
- 3. Include impact, affected versions, and reproduction steps.
27
- 4. Avoid public disclosure until maintainers confirm a fix/release plan.
28
-
29
- ## Release and supply-chain baseline
30
-
31
- - Release flow uses release-please PRs before tags/releases.
32
- - Publish flow uses npm Trusted Publishing (OIDC) and `npm publish --provenance`.
33
- - Workflow permissions default to read and elevate per job only.
34
- - Third-party actions must stay explicit; high-risk paths should be SHA pinned.
package/SUPPORT.md DELETED
@@ -1,37 +0,0 @@
1
- ---
2
- summary: "How users and contributors request help or report problems."
3
- read_when:
4
- - "Needing help, troubleshooting, or reporting non-security issues."
5
- - "Deciding where to file bug/feature/docs requests."
6
- system4d:
7
- container: "Support intake and routing guidance."
8
- compass: "Route requests to the right channel with enough context."
9
- engine: "Self-check -> search -> file focused issue -> iterate."
10
- fog: "Reproduction context is often incomplete in first reports."
11
- ---
12
-
13
- # Support
14
-
15
- ## Before opening an issue
16
-
17
- 1. Read [README.md](README.md) and relevant docs in `docs/`.
18
- 2. Search existing issues/PRs for duplicates.
19
- 3. Re-test on the latest release.
20
-
21
- ## Open the right issue type
22
-
23
- Use the GitHub issue forms for:
24
-
25
- - Bug reports
26
- - Feature requests
27
- - Documentation improvements
28
-
29
- ## Security reports
30
-
31
- For vulnerabilities, follow [SECURITY.md](SECURITY.md) and use private reporting.
32
- Do **not** post exploit details in public issues.
33
-
34
- ## Maintainer response expectations
35
-
36
- This project may be maintained part-time. Triage and response times can vary,
37
- but actionable reports with reproduction details are prioritized.
@@ -1,37 +0,0 @@
1
- ---
2
- summary: "Contribution workflow for this extension repository."
3
- read_when:
4
- - "Before opening PRs or submitting local changes."
5
- system4d:
6
- container: "Contributor process and quality gates."
7
- compass: "Small, validated, documented changes."
8
- engine: "Branch -> implement -> check -> document -> review."
9
- fog: "Process details may adjust with team scale."
10
- ---
11
-
12
- # Contributing
13
-
14
- ## Workflow
15
-
16
- 1. Create a focused branch.
17
- 2. Run `npm run docs:list` and read matched docs before cross-cutting changes.
18
- 3. Implement one scoped change.
19
- 4. Run `npm run check`.
20
- 5. Update docs/changelog where relevant.
21
- 6. Open PR with concise rationale and validation output.
22
-
23
- ## Standards
24
-
25
- - Keep diffs small and reviewable.
26
- - Preserve markdown frontmatter in generated docs.
27
- - Prefer explicit scripts over manual one-off commands.
28
-
29
- ## Copier policy
30
-
31
- - Keep `.copier-answers.yml` in version control.
32
- - Do not edit `.copier-answers.yml` manually.
33
- - Run update/recopy from a clean destination repo (commit or stash pending changes first).
34
- - Use `copier update --trust` when `.copier-answers.yml` includes `_commit` and update is supported.
35
- - In non-interactive shells/CI, append `--defaults` to update/recopy.
36
- - Use `copier recopy --trust` when update is unavailable (for example local non-VCS source) or cannot reconcile cleanly.
37
- - After recopy, re-apply local deltas intentionally and run `npm run check`.
@@ -1,43 +0,0 @@
1
- ---
2
- summary: "Lifecycle SOP for extension delivery and maintenance."
3
- read_when:
4
- - "Planning, implementing, verifying, releasing, or maintaining extension work."
5
- system4d:
6
- container: "End-to-end extension operating procedure."
7
- compass: "Consistent quality from idea to maintenance."
8
- engine: "plan -> implement -> verify -> release -> maintain."
9
- fog: "Unknowns resolved through incremental validation loops."
10
- ---
11
-
12
- # Extension SOP
13
-
14
- ## 1) Plan
15
-
16
- - Define scope and acceptance criteria.
17
- - Run `npm run docs:list` and read docs matching your task domain.
18
- - Capture work in `docs/dev/plans/`.
19
- - Confirm risks and dependencies.
20
-
21
- ## 2) Implement
22
-
23
- - Build in small commits.
24
- - Keep command/tool behavior explicit.
25
- - Update docs as behavior changes.
26
-
27
- ## 3) Verify
28
-
29
- - Run `npm run check`.
30
- - Execute relevant extension tests.
31
- - Validate prompt templates if changed.
32
-
33
- ## 4) Release
34
-
35
- - Update `CHANGELOG.md`.
36
- - Tag/version according to team policy.
37
- - Sync extension to live pi when needed.
38
-
39
- ## 5) Maintain
40
-
41
- - Monitor regressions and user feedback.
42
- - Re-run validation after dependency/script changes.
43
- - Keep `docs/dev/status.md` and `docs/dev/next_steps.md` current.
@@ -1,17 +0,0 @@
1
- ---
2
- summary: "Prioritized next actions for active development."
3
- read_when:
4
- - "Starting a coding session or grooming tasks."
5
- system4d:
6
- container: "Execution queue for maintainers."
7
- compass: "Maintain momentum with clear, ordered tasks."
8
- engine: "Do highest-leverage item first, then validate."
9
- fog: "Task order may change after discovery."
10
- ---
11
-
12
- # Next steps
13
-
14
- 1. Complete npm publish on npmjs (login, registry, publish, verify install).
15
- 2. Add at least one automated test for argument parsing and expectation scoring.
16
- 3. Add a small repeatable report-share helper (JSON -> static HTML export command/script).
17
- 4. Evaluate optional LLM-judge scoring mode (`expectJudgePrompt`) after parser/scoring tests exist.
@@ -1,24 +0,0 @@
1
- ---
2
- summary: "Initial implementation plan for first extension iteration."
3
- read_when:
4
- - "Executing the first feature slice from scaffold state."
5
- system4d:
6
- container: "Plan artifact for incremental delivery."
7
- compass: "Move from scaffold to validated feature quickly."
8
- engine: "Plan -> implement -> verify -> document."
9
- fog: "Scope creep risk if tasks are not constrained."
10
- ---
11
-
12
- # Plan 001: first feature slice
13
-
14
- ## Objective
15
-
16
- Ship one useful command behavior end-to-end.
17
-
18
- ## Steps
19
-
20
- 1. Define expected command input/output.
21
- 2. Implement logic in `extensions/`.
22
- 3. Add tests in `tests/`.
23
- 4. Run `npm run check`.
24
- 5. Update `docs/dev/status.md` and `CHANGELOG.md`.