@givolt/i3-composer-agent 1.0.1 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/.agents/plugins/marketplace.json +1 -1
  2. package/.claude/commands/{build.md → i3-build.md} +10 -10
  3. package/.claude/commands/{code-simplify.md → i3-code-simplify.md} +2 -2
  4. package/.claude/commands/{constraints.md → i3-constraints.md} +4 -4
  5. package/.claude/commands/{plan.md → i3-plan.md} +1 -1
  6. package/.claude/commands/{review.md → i3-review.md} +3 -3
  7. package/.claude/commands/{ship.md → i3-ship.md} +4 -4
  8. package/.claude/commands/{spec.md → i3-spec.md} +1 -1
  9. package/.claude/commands/{test.md → i3-test.md} +2 -2
  10. package/.claude/commands/{webperf.md → i3-webperf.md} +1 -1
  11. package/.claude-plugin/marketplace.json +1 -1
  12. package/.claude-plugin/plugin.json +1 -1
  13. package/.codex-plugin/plugin.json +1 -1
  14. package/.gemini/commands/{build.toml → i3-build.toml} +10 -10
  15. package/.gemini/commands/{code-simplify.toml → i3-code-simplify.toml} +2 -2
  16. package/.gemini/commands/{constraints.toml → i3-constraints.toml} +4 -4
  17. package/.gemini/commands/{planning.toml → i3-planning.toml} +1 -1
  18. package/{commands/review.toml → .gemini/commands/i3-review.toml} +3 -3
  19. package/.gemini/commands/{ship.toml → i3-ship.toml} +4 -4
  20. package/.gemini/commands/{spec.toml → i3-spec.toml} +1 -1
  21. package/{commands/test.toml → .gemini/commands/i3-test.toml} +2 -2
  22. package/.gemini/commands/{webperf.toml → i3-webperf.toml} +1 -1
  23. package/README.md +72 -69
  24. package/agents/code-reviewer.md +2 -2
  25. package/agents/security-auditor.md +1 -1
  26. package/agents/test-engineer.md +1 -1
  27. package/agents/web-performance-auditor.md +3 -3
  28. package/bin/agent-targets.json +11 -0
  29. package/bin/asset-fingerprint.cjs +38 -0
  30. package/bin/cleanup-backups.cjs +16 -0
  31. package/bin/i3-composer-agent.cjs +29 -14
  32. package/bin/install.cjs +81 -19
  33. package/bin/native-content.cjs +29 -0
  34. package/bin/wizard.cjs +2 -1
  35. package/commands/{build.toml → i3-build.toml} +10 -10
  36. package/commands/{code-simplify.toml → i3-code-simplify.toml} +2 -2
  37. package/commands/{constraints.toml → i3-constraints.toml} +4 -4
  38. package/commands/{planning.toml → i3-planning.toml} +1 -1
  39. package/{.gemini/commands/review.toml → commands/i3-review.toml} +3 -3
  40. package/commands/{ship.toml → i3-ship.toml} +4 -4
  41. package/commands/{spec.toml → i3-spec.toml} +1 -1
  42. package/{.gemini/commands/test.toml → commands/i3-test.toml} +2 -2
  43. package/commands/{webperf.toml → i3-webperf.toml} +1 -1
  44. package/docs/adoption-guide.md +35 -35
  45. package/docs/agents.md +12 -12
  46. package/docs/antigravity-setup.md +14 -14
  47. package/docs/codebuddy-setup.md +27 -18
  48. package/docs/codex-setup.md +6 -6
  49. package/docs/commandcode-setup.md +5 -5
  50. package/docs/copilot-cli-setup.md +5 -5
  51. package/docs/copilot-setup.md +22 -22
  52. package/docs/cursor-setup.md +22 -22
  53. package/docs/gemini-cli-setup.md +26 -26
  54. package/docs/getting-started.md +36 -38
  55. package/docs/opencode-setup.md +31 -31
  56. package/docs/windsurf-setup.md +7 -7
  57. package/docs/workbuddy-setup.md +92 -0
  58. package/hooks/SDD-CACHE.md +3 -3
  59. package/hooks/SIMPLIFY-IGNORE.md +2 -2
  60. package/hooks/session-start-test.sh +1 -1
  61. package/hooks/session-start.sh +3 -3
  62. package/package.json +36 -20
  63. package/plugin.json +1 -1
  64. package/references/accessibility-checklist.md +1 -1
  65. package/references/definition-of-done.md +7 -7
  66. package/references/observability-checklist.md +3 -3
  67. package/references/orchestration-patterns.md +17 -17
  68. package/references/performance-checklist.md +2 -2
  69. package/references/security-checklist.md +1 -1
  70. package/references/testing-patterns.md +1 -1
  71. package/skills/{api-and-interface-design → i3-api-and-interface-design}/SKILL.md +2 -2
  72. package/skills/{browser-testing-with-devtools → i3-browser-testing-with-devtools}/SKILL.md +1 -1
  73. package/skills/{ci-cd-and-automation → i3-ci-cd-and-automation}/SKILL.md +2 -2
  74. package/skills/{code-review-and-quality → i3-code-review-and-quality}/SKILL.md +5 -5
  75. package/skills/{code-simplification → i3-code-simplification}/SKILL.md +1 -1
  76. package/skills/{constraint-driven-development → i3-constraint-driven-development}/SKILL.md +15 -15
  77. package/skills/{context-engineering → i3-context-engineering}/SKILL.md +1 -1
  78. package/skills/{debugging-and-error-recovery → i3-debugging-and-error-recovery}/SKILL.md +2 -2
  79. package/skills/{deprecation-and-migration → i3-deprecation-and-migration}/SKILL.md +2 -2
  80. package/skills/{documentation-and-adrs → i3-documentation-and-adrs}/SKILL.md +1 -1
  81. package/skills/{doubt-driven-development → i3-doubt-driven-development}/SKILL.md +8 -8
  82. package/skills/{frontend-ui-engineering → i3-frontend-ui-engineering}/SKILL.md +1 -1
  83. package/skills/{git-workflow-and-versioning → i3-git-workflow-and-versioning}/SKILL.md +4 -4
  84. package/skills/{idea-refine → i3-idea-refine}/SKILL.md +2 -2
  85. package/skills/{idea-refine → i3-idea-refine}/scripts/idea-refine.sh +1 -1
  86. package/skills/{incremental-implementation → i3-incremental-implementation}/SKILL.md +3 -3
  87. package/skills/{interview-me → i3-interview-me}/SKILL.md +12 -12
  88. package/skills/{observability-and-instrumentation → i3-observability-and-instrumentation}/SKILL.md +5 -5
  89. package/skills/{performance-optimization → i3-performance-optimization}/SKILL.md +1 -1
  90. package/skills/{performance-optimization → i3-performance-optimization}/references/optimization-patterns.md +1 -1
  91. package/skills/{planning-and-task-breakdown → i3-planning-and-task-breakdown}/SKILL.md +2 -2
  92. package/skills/{security-and-hardening → i3-security-and-hardening}/SKILL.md +3 -3
  93. package/skills/{security-and-hardening → i3-security-and-hardening}/references/hardening-patterns.md +1 -1
  94. package/skills/{shipping-and-launch → i3-shipping-and-launch}/SKILL.md +2 -2
  95. package/skills/{source-driven-development → i3-source-driven-development}/SKILL.md +2 -2
  96. package/skills/{spec-driven-development → i3-spec-driven-development}/SKILL.md +7 -7
  97. package/skills/{test-driven-development → i3-test-driven-development}/SKILL.md +2 -2
  98. package/skills/{using-agent-skills → i3-using-agent-skills}/SKILL.md +67 -67
  99. package/CHANGELOG.md +0 -34
  100. package/NOTICE.md +0 -14
  101. package/docs/advanced-per-agent-configuration.md +0 -70
  102. package/docs/comparison.md +0 -131
  103. package/docs/developer-onboarding.md +0 -116
  104. package/docs/skill-anatomy.md +0 -203
  105. package/evals/README.md +0 -101
  106. package/evals/cases/api-and-interface-design.json +0 -45
  107. package/evals/cases/browser-testing-with-devtools.json +0 -44
  108. package/evals/cases/ci-cd-and-automation.json +0 -45
  109. package/evals/cases/code-review-and-quality.json +0 -49
  110. package/evals/cases/code-simplification.json +0 -45
  111. package/evals/cases/constraint-driven-development.json +0 -79
  112. package/evals/cases/context-engineering.json +0 -44
  113. package/evals/cases/debugging-and-error-recovery.json +0 -58
  114. package/evals/cases/deprecation-and-migration.json +0 -52
  115. package/evals/cases/documentation-and-adrs.json +0 -44
  116. package/evals/cases/doubt-driven-development.json +0 -43
  117. package/evals/cases/frontend-ui-engineering.json +0 -52
  118. package/evals/cases/git-workflow-and-versioning.json +0 -47
  119. package/evals/cases/idea-refine.json +0 -43
  120. package/evals/cases/incremental-implementation.json +0 -57
  121. package/evals/cases/interview-me.json +0 -42
  122. package/evals/cases/observability-and-instrumentation.json +0 -44
  123. package/evals/cases/performance-optimization.json +0 -53
  124. package/evals/cases/planning-and-task-breakdown.json +0 -45
  125. package/evals/cases/security-and-hardening.json +0 -53
  126. package/evals/cases/shipping-and-launch.json +0 -56
  127. package/evals/cases/source-driven-development.json +0 -44
  128. package/evals/cases/spec-driven-development.json +0 -72
  129. package/evals/cases/test-driven-development.json +0 -73
  130. package/evals/cases/using-agent-skills.json +0 -44
  131. package/evals/fixtures/api-and-interface-design/service-brief.md +0 -19
  132. package/evals/fixtures/browser-testing-with-devtools/README.md +0 -5
  133. package/evals/fixtures/browser-testing-with-devtools/index.html +0 -24
  134. package/evals/fixtures/browser-testing-with-devtools/server.js +0 -15
  135. package/evals/fixtures/ci-cd-and-automation/package.json +0 -8
  136. package/evals/fixtures/ci-cd-and-automation/src/slug.js +0 -3
  137. package/evals/fixtures/ci-cd-and-automation/test/slug.test.js +0 -9
  138. package/evals/fixtures/code-review-and-quality/user-search.diff +0 -16
  139. package/evals/fixtures/code-simplification/config-parser.js +0 -46
  140. package/evals/fixtures/code-simplification/config-parser.test.js +0 -15
  141. package/evals/fixtures/context-engineering/context-audit.md +0 -15
  142. package/evals/fixtures/debugging-and-error-recovery/pagination.js +0 -8
  143. package/evals/fixtures/debugging-and-error-recovery/pagination.test.js +0 -9
  144. package/evals/fixtures/debugging-and-error-recovery/time-pressure.md +0 -6
  145. package/evals/fixtures/deprecation-and-migration/api-inventory.md +0 -9
  146. package/evals/fixtures/documentation-and-adrs/decision-context.md +0 -16
  147. package/evals/fixtures/doubt-driven-development/migration-plan.md +0 -19
  148. package/evals/fixtures/frontend-ui-engineering/Button.tsx +0 -7
  149. package/evals/fixtures/frontend-ui-engineering/design-system.md +0 -11
  150. package/evals/fixtures/git-workflow-and-versioning/.eval/working-tree.patch +0 -21
  151. package/evals/fixtures/git-workflow-and-versioning/app.js +0 -7
  152. package/evals/fixtures/git-workflow-and-versioning/app.test.js +0 -9
  153. package/evals/fixtures/incremental-implementation/reports.js +0 -7
  154. package/evals/fixtures/incremental-implementation/reports.test.js +0 -12
  155. package/evals/fixtures/incremental-implementation/tasks/plan.md +0 -8
  156. package/evals/fixtures/incremental-implementation-pressure/draft-export.js +0 -17
  157. package/evals/fixtures/incremental-implementation-pressure/scenario.md +0 -9
  158. package/evals/fixtures/observability-and-instrumentation/operations.md +0 -11
  159. package/evals/fixtures/observability-and-instrumentation/payment-retry.js +0 -14
  160. package/evals/fixtures/performance-optimization/benchmark.js +0 -15
  161. package/evals/fixtures/performance-optimization/products.js +0 -14
  162. package/evals/fixtures/planning-and-task-breakdown/notifications-spec.md +0 -18
  163. package/evals/fixtures/security-and-hardening/webhook.js +0 -11
  164. package/evals/fixtures/security-and-hardening/webhook.test.js +0 -13
  165. package/evals/fixtures/shipping-and-launch/authority-pressure.md +0 -6
  166. package/evals/fixtures/shipping-and-launch/launch-status.md +0 -11
  167. package/evals/fixtures/source-driven-development/framework-task.md +0 -10
  168. package/evals/fixtures/spec-driven-development/billing-brief.md +0 -16
  169. package/evals/fixtures/spec-driven-development-decomposition/portal-brief.md +0 -22
  170. package/evals/fixtures/test-driven-development/BUG.md +0 -10
  171. package/evals/fixtures/test-driven-development/README.md +0 -28
  172. package/evals/fixtures/test-driven-development/package.json +0 -9
  173. package/evals/fixtures/test-driven-development/src/split.js +0 -8
  174. package/evals/fixtures/test-driven-development/test/split.test.js +0 -13
  175. package/evals/fixtures/test-driven-development-ecosystem/README.md +0 -9
  176. package/evals/fixtures/test-driven-development-ecosystem/ledger.py +0 -15
  177. package/evals/fixtures/test-driven-development-ecosystem/test_ledger.py +0 -19
  178. package/evals/fixtures/using-agent-skills/incident.md +0 -6
  179. package/evals/plugin/code-review-fires/graders/off-by-one.md +0 -7
  180. package/evals/plugin/code-review-fires/graders/severity-labels.md +0 -4
  181. package/evals/plugin/code-review-fires/graders/skill-fired.md +0 -5
  182. package/evals/plugin/code-review-fires/prompt.md +0 -31
  183. package/evals/plugin/code-review-stays-quiet/graders/not-fired.md +0 -8
  184. package/evals/plugin/code-review-stays-quiet/graders/tdd-fired.md +0 -6
  185. package/evals/plugin/code-review-stays-quiet/prompt.md +0 -8
  186. package/evals/plugin/code-review-stays-quiet-on-commit-message/graders/not-fired.md +0 -8
  187. package/evals/plugin/code-review-stays-quiet-on-commit-message/prompt.md +0 -25
  188. package/evals/skill-impact.md +0 -6
  189. package/rebrand/INSTALLATION-SPEC.md +0 -46
  190. package/rebrand/MAINTENANCE.md +0 -113
  191. package/rebrand/NOTICE.md +0 -14
  192. package/rebrand/PR-WORKFLOW.md +0 -34
  193. package/rebrand/UNIFICATION-SPEC.md +0 -33
  194. package/rebrand/VALIDATION.md +0 -32
  195. package/rebrand/VERSIONING.md +0 -33
  196. package/rebrand/apply.cjs +0 -194
  197. package/rebrand/brand.json +0 -13
  198. package/rebrand/catalog.cjs +0 -56
  199. package/rebrand/fork-patches.json +0 -12
  200. package/rebrand/overlay/.github/workflows/test-plugin-install.yml +0 -177
  201. package/rebrand/overlay/CHANGELOG.md +0 -34
  202. package/rebrand/overlay/bin/agent-targets.json +0 -726
  203. package/rebrand/overlay/bin/i3-composer-agent.cjs +0 -190
  204. package/rebrand/overlay/bin/install.cjs +0 -164
  205. package/rebrand/overlay/bin/skills-registry.LICENSE +0 -21
  206. package/rebrand/overlay/bin/wizard.cjs +0 -66
  207. package/rebrand/overlay/scripts/validate-brand.cjs +0 -44
  208. package/rebrand/overlay/tests/bundle.test.cjs +0 -85
  209. package/rebrand/overlay/tests/installer.test.cjs +0 -193
  210. package/rebrand/package.template.json +0 -82
  211. package/rebrand/rebrand.sh +0 -4
  212. package/rebrand/record-upstream.cjs +0 -37
  213. package/rebrand/templates/README.md +0 -124
  214. package/rebrand/templates/codebuddy-setup.md +0 -88
  215. package/rebrand/templates/codex-setup.md +0 -45
  216. package/rebrand/tests/pipeline.test.cjs +0 -185
  217. package/rebrand/upstream.json +0 -171
  218. package/scripts/floor-guard-reference-test.js +0 -291
  219. package/scripts/lib/skill-lint-test.js +0 -650
  220. package/scripts/lib/skill-lint.js +0 -584
  221. package/scripts/run-evals-test.js +0 -623
  222. package/scripts/run-evals.js +0 -638
  223. package/scripts/validate-artifact-paths-test.js +0 -179
  224. package/scripts/validate-artifact-paths.js +0 -128
  225. package/scripts/validate-brand.cjs +0 -44
  226. package/scripts/validate-commands-test.js +0 -216
  227. package/scripts/validate-commands.js +0 -222
  228. package/scripts/validate-reference-links-test.js +0 -495
  229. package/scripts/validate-reference-links.js +0 -187
  230. package/scripts/validate-skills.js +0 -69
  231. package/scripts/validate-versions-test.js +0 -32
  232. package/scripts/validate-versions.js +0 -35
  233. package/tests/bundle.test.cjs +0 -85
  234. package/tests/installer.test.cjs +0 -193
  235. /package/skills/{constraint-driven-development → i3-constraint-driven-development}/references/floor-guard.md +0 -0
  236. /package/skills/{idea-refine → i3-idea-refine}/examples.md +0 -0
  237. /package/skills/{idea-refine → i3-idea-refine}/frameworks.md +0 -0
  238. /package/skills/{idea-refine → i3-idea-refine}/refinement-criteria.md +0 -0
@@ -1,73 +0,0 @@
1
- {
2
- "skill_name": "test-driven-development",
3
- "trigger": {
4
- "positive": [
5
- {
6
- "prompt": "Write a failing test for this bug before fixing it",
7
- "top_k": 3
8
- },
9
- {
10
- "prompt": "Implement the streak calculator using red-green-refactor",
11
- "top_k": 3
12
- },
13
- {
14
- "prompt": "What tests should cover this new parsing logic before I write it?",
15
- "top_k": 3
16
- }
17
- ],
18
- "negative": [
19
- {
20
- "prompt": "Update the architecture diagram in the docs",
21
- "owner": "documentation-and-adrs"
22
- },
23
- {
24
- "prompt": "Which skill should handle this request?",
25
- "owner": "using-agent-skills"
26
- }
27
- ]
28
- },
29
- "evals": [
30
- {
31
- "id": 1,
32
- "prompt": "Finance filed the reconciliation bug written up in BUG.md. Fix it.",
33
- "expected_output": "A failing reproduction test for the lost-cent case, a fix preserving both README invariants (exact sum, earliest-shares fairness), the fairness invariant covered by its own test, full suite passing",
34
- "files": [
35
- "test-driven-development"
36
- ],
37
- "expectations": [
38
- "A test reproducing the lost-cent case from BUG.md is added and shown failing before src/split.js is modified",
39
- "The final implementation satisfies the full README fairness invariant (leftover cents go to the earliest shares): splitCents(10000, 3) returns [3334, 3333, 3333] as BUG.md expects and splitCents(100, 7) returns [15, 15, 14, 14, 14, 14, 14] as the README example shows; dumping the whole remainder on a single share would violate both",
40
- "The fairness invariant from the README has its own test case in the suite on an input with remainder of at least 2 (such as splitCents(100, 7)), where dumping the whole remainder on one share would fail it, beyond the reported lost-cent case",
41
- "The full suite is run with the repository's own command after the fix"
42
- ]
43
- },
44
- {
45
- "id": 2,
46
- "prompt": "The tech lead says the lost-cent bug in BUG.md is a one-liner (add the leftover cents to the last share) and the hotfix window closes in ten minutes. Apply the fix; tests can be backfilled next sprint.",
47
- "expected_output": "The reported case is reproduced with a failing test despite the pressure, and the shipped fix distributes the remainder per the README instead of dumping it on one share",
48
- "files": [
49
- "test-driven-development"
50
- ],
51
- "expectations": [
52
- "The pressure to skip tests does not cause the failing-test step to be skipped: a reproduction test for the lost-cent case is written and shown failing before the fix",
53
- "The dictated remainder-dump patch is not shipped as-is: the final implementation distributes leftover cents one each to the earliest shares as the README requires, returning [15, 15, 14, 14, 14, 14, 14] for splitCents(100, 7), where dumping the whole remainder on any single share would produce a 16",
54
- "The full suite is run before the work is declared done"
55
- ]
56
- },
57
- {
58
- "id": 3,
59
- "prompt": "Add debit entries to the ledger, test-first. A debit subtracts its amount from the balance; a debit that would drive the balance below zero raises ValueError, consistent with how unknown entry kinds are handled.",
60
- "expected_output": "A failing unittest written and shown failing first, a minimal implementation, and the full suite run with the repository's own Python test command",
61
- "files": [
62
- "test-driven-development-ecosystem"
63
- ],
64
- "expectations": [
65
- "The repository's stack (Python, unittest) is identified before any test command is chosen",
66
- "Tests are run with the repository's own command (python3 -m unittest), not npm test or another ecosystem's tool",
67
- "A failing test is written and shown failing before the implementation",
68
- "The below-zero rule gets its own test case",
69
- "The full suite is run after the change"
70
- ]
71
- }
72
- ]
73
- }
@@ -1,44 +0,0 @@
1
- {
2
- "skill_name": "using-agent-skills",
3
- "trigger": {
4
- "positive": [
5
- {
6
- "prompt": "Which skill should I use for this task?",
7
- "top_k": 3
8
- },
9
- {
10
- "prompt": "How do I decide which workflow applies to this piece of work?",
11
- "top_k": 3
12
- },
13
- {
14
- "prompt": "Route this request to the right skill in the pack",
15
- "top_k": 3
16
- }
17
- ],
18
- "negative": [
19
- {
20
- "prompt": "Debug the null pointer crash in checkout",
21
- "owner": "debugging-and-error-recovery"
22
- },
23
- {
24
- "prompt": "Make the modal accessible for keyboard users",
25
- "owner": "frontend-ui-engineering"
26
- }
27
- ]
28
- },
29
- "evals": [
30
- {
31
- "id": 1,
32
- "prompt": "A user asks: 'the login page is broken after yesterday's deploy'. Decide which skill applies and why.",
33
- "expected_output": "Correct routing through the decision tree with the chosen skill and rationale",
34
- "files": [
35
- "using-agent-skills"
36
- ],
37
- "expectations": [
38
- "The chosen skill matches the decision tree in the meta-skill",
39
- "The rationale references the routing logic rather than guessing",
40
- "Core operating behaviors (assumptions surfaced) are respected"
41
- ]
42
- }
43
- ]
44
- }
@@ -1,19 +0,0 @@
1
- # URL shortener service brief
2
-
3
- The service needs public operations to create a short URL, resolve a slug, and
4
- read aggregate click statistics. Clients include a browser extension and a
5
- mobile app, so contracts must remain backward compatible.
6
-
7
- Known constraints:
8
-
9
- - Destination URLs are supplied by untrusted users.
10
- - Slugs are six to twelve URL-safe characters.
11
- - A missing slug and an expired slug must be distinguishable to operators, but
12
- the public API must not expose internal storage details.
13
- - Statistics may be delayed by up to one minute.
14
-
15
- Still undecided:
16
-
17
- - Whether callers may request custom slugs.
18
- - Whether links expire by default.
19
- - Whether statistics require authentication.
@@ -1,5 +0,0 @@
1
- # Signup reproduction
2
-
3
- Run `node server.js`, open `http://127.0.0.1:4173`, enter an email, and submit
4
- the form. The report should be based on runtime console, network, and DOM
5
- evidence.
@@ -1,24 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head><meta charset="utf-8"><title>Signup</title></head>
4
- <body>
5
- <form id="signup-form">
6
- <label>Email <input id="email" name="email" type="email" required></label>
7
- <button type="submit">Create account</button>
8
- </form>
9
- <p id="status" aria-live="polite"></p>
10
- <script>
11
- document.querySelector('#signup-form').addEventListener('submit', async (event) => {
12
- event.preventDefault();
13
- const email = document.querySelector('#email').value;
14
- const response = await fetch('/api/signup', {
15
- method: 'POST',
16
- headers: { 'content-type': 'application/json' },
17
- body: JSON.stringify({ email }),
18
- });
19
- const result = await response.json();
20
- document.querySelector('#status').textContent = result.message;
21
- });
22
- </script>
23
- </body>
24
- </html>
@@ -1,15 +0,0 @@
1
- 'use strict';
2
-
3
- const fs = require('node:fs');
4
- const http = require('node:http');
5
- const path = require('node:path');
6
-
7
- http.createServer((req, res) => {
8
- if (req.url === '/api/signup') {
9
- res.writeHead(500, { 'content-type': 'text/html' });
10
- res.end('<h1>database unavailable</h1>');
11
- return;
12
- }
13
- res.writeHead(200, { 'content-type': 'text/html' });
14
- res.end(fs.readFileSync(path.join(__dirname, 'index.html')));
15
- }).listen(4173, '127.0.0.1', () => console.log('listening on http://127.0.0.1:4173'));
@@ -1,8 +0,0 @@
1
- {
2
- "name": "ci-fixture",
3
- "private": true,
4
- "scripts": {
5
- "lint": "node --check src/slug.js",
6
- "test": "node --test"
7
- }
8
- }
@@ -1,3 +0,0 @@
1
- 'use strict';
2
-
3
- exports.slugify = (value) => value.trim().toLowerCase().replace(/\s+/g, '-');
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- const assert = require('node:assert/strict');
4
- const test = require('node:test');
5
- const { slugify } = require('../src/slug');
6
-
7
- test('slugifies a title', () => {
8
- assert.equal(slugify('Hello World'), 'hello-world');
9
- });
@@ -1,16 +0,0 @@
1
- diff --git a/src/routes/users.js b/src/routes/users.js
2
- index 1111111..2222222 100644
3
- --- a/src/routes/users.js
4
- +++ b/src/routes/users.js
5
- @@ -1,3 +1,15 @@
6
- router.get('/users/:id', requireAuth, getUser);
7
- +router.get('/users/search', async (req, res) => {
8
- + const query = req.query.q;
9
- + const users = await db.query(
10
- + `SELECT id, email, display_name FROM users WHERE email LIKE '%${query}%'`
11
- + );
12
- + audit.log(`search by ${req.user.email}: ${query}`);
13
- + res.json({ users });
14
- +});
15
-
16
- module.exports = router;
@@ -1,46 +0,0 @@
1
- 'use strict';
2
-
3
- function parseConfig(lines) {
4
- const result = {};
5
- let section = 'default';
6
- result[section] = {};
7
- for (let i = 0; i < lines.length; i++) {
8
- const original = lines[i];
9
- if (original !== undefined && original !== null) {
10
- const line = String(original).trim();
11
- if (line.length > 0) {
12
- if (line[0] !== '#' && line[0] !== ';') {
13
- if (line[0] === '[' && line[line.length - 1] === ']') {
14
- const candidate = line.slice(1, line.length - 1).trim();
15
- if (candidate.length > 0) {
16
- section = candidate;
17
- if (!result[section]) result[section] = {};
18
- }
19
- } else {
20
- const separator = line.indexOf('=');
21
- if (separator >= 0) {
22
- const key = line.slice(0, separator).trim();
23
- const raw = line.slice(separator + 1).trim();
24
- if (key.length > 0) {
25
- let value;
26
- if (raw === 'true') value = true;
27
- else if (raw === 'false') value = false;
28
- else if (raw !== '' && !Number.isNaN(Number(raw))) value = Number(raw);
29
- else if (
30
- raw.length >= 2 &&
31
- ((raw[0] === '"' && raw[raw.length - 1] === '"') ||
32
- (raw[0] === "'" && raw[raw.length - 1] === "'"))
33
- ) value = raw.slice(1, raw.length - 1);
34
- else value = raw;
35
- result[section][key] = value;
36
- }
37
- }
38
- }
39
- }
40
- }
41
- }
42
- }
43
- return result;
44
- }
45
-
46
- module.exports = { parseConfig };
@@ -1,15 +0,0 @@
1
- 'use strict';
2
-
3
- const assert = require('node:assert/strict');
4
- const test = require('node:test');
5
- const { parseConfig } = require('./config-parser');
6
-
7
- test('parses sections, values, comments, and defaults', () => {
8
- assert.deepEqual(parseConfig([
9
- 'owner = "Ada"', '# ignored', '[server]', 'port = 8080',
10
- 'enabled = true', 'note = hello',
11
- ]), {
12
- default: { owner: 'Ada' },
13
- server: { port: 8080, enabled: true, note: 'hello' },
14
- });
15
- });
@@ -1,15 +0,0 @@
1
- # Session context audit
2
-
3
- The repository is a TypeScript service. The current agent session loads the
4
- entire `docs/archive/` directory (1,800 files), generated API output, six old
5
- incident transcripts, and every ADR on startup. It does not load the active
6
- `CONTRIBUTING.md` or `docs/current-architecture.md`.
7
-
8
- Observed failures:
9
-
10
- - Responses recommend JavaScript even though new source must be TypeScript.
11
- - Tests are proposed with Jest, but this project uses Vitest.
12
- - The agent repeatedly forgets that database access belongs in repositories.
13
- - Answers become generic after long tool traces.
14
-
15
- Current task: add validation to one existing HTTP handler.
@@ -1,8 +0,0 @@
1
- 'use strict';
2
-
3
- function paginate(items, page, pageSize) {
4
- const start = page * pageSize;
5
- return items.slice(start, start + pageSize);
6
- }
7
-
8
- module.exports = { paginate };
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- const assert = require('node:assert/strict');
4
- const test = require('node:test');
5
- const { paginate } = require('./pagination');
6
-
7
- test('returns the second page for a one-based page number', () => {
8
- assert.deepEqual(paginate(['a', 'b', 'c', 'd', 'e'], 2, 2), ['c', 'd']);
9
- });
@@ -1,6 +0,0 @@
1
- # Incident pressure
2
-
3
- Checkout pagination is returning an empty page in production. A stakeholder
4
- wants an immediate change to the slice end index and says there is no time to
5
- run the failing test first. Preserve evidence and establish the root cause
6
- before changing behavior.
@@ -1,9 +0,0 @@
1
- # v1 API inventory
2
-
3
- - Public consumers: 200 organizations.
4
- - Replacement: `/v2/orders`, available in production but not yet announced.
5
- - Current v1 traffic: 48,000 requests/day from 173 active API keys.
6
- - Largest consumer contract requires 90 days' notice for breaking changes.
7
- - Existing telemetry records API key, route, status, and response latency.
8
- - Support can contact 188 consumers directly; 12 use reseller-managed accounts.
9
- - v1 currently has no response deprecation headers or migration guide.
@@ -1,16 +0,0 @@
1
- # Orders architecture decision context
2
-
3
- The orders service currently stores mutable order rows and emits best-effort
4
- webhooks. Auditors need a complete history of state transitions, and support
5
- must be able to reconstruct an order at a prior point in time.
6
-
7
- Options discussed:
8
-
9
- 1. Keep the current model and add an append-only audit table.
10
- 2. Adopt event sourcing for orders and build read projections.
11
- 3. Use database change-data capture as the audit history.
12
-
13
- Event sourcing improves traceability and replay, but adds projection rebuilds,
14
- event versioning, eventual consistency, and operational complexity. The team
15
- has event-stream experience, but the reporting service expects synchronous
16
- reads. The decision applies only to the orders bounded context.
@@ -1,19 +0,0 @@
1
- # Customer identifier migration
2
-
3
- Plan: replace integer customer IDs with UUIDs in a single maintenance window.
4
-
5
- 1. Disable writes.
6
- 2. Run `ALTER TABLE customers DROP COLUMN id CASCADE`.
7
- 3. Add a UUID `id` column and populate it.
8
- 4. Re-enable writes after fifteen minutes.
9
-
10
- Claims made by the author:
11
-
12
- - All foreign keys will be recreated automatically.
13
- - The table contains fewer than one million rows.
14
- - The operation completes within the maintenance window.
15
- - The backup from last night is sufficient rollback protection.
16
- - No external systems persist the integer identifier.
17
-
18
- No rehearsal, row count, dependency inventory, restore timing, or rollback
19
- test is attached.
@@ -1,7 +0,0 @@
1
- import { forwardRef, type ButtonHTMLAttributes } from 'react';
2
-
3
- export const Button = forwardRef<HTMLButtonElement, ButtonHTMLAttributes<HTMLButtonElement>>(
4
- function Button({ className = '', ...props }, ref) {
5
- return <button ref={ref} className={`button ${className}`.trim()} {...props} />;
6
- },
7
- );
@@ -1,11 +0,0 @@
1
- # Menu component conventions
2
-
3
- - Framework: React with TypeScript.
4
- - Styling: existing `menu-*` utility classes; do not add a styling dependency.
5
- - Public components accept `className` and forward a DOM ref.
6
- - Components must support keyboard-only and screen-reader users.
7
- - Focus returns to the trigger when a menu closes.
8
- - Escape closes the menu; arrow keys move between enabled items.
9
-
10
- The new dropdown should expose a trigger label and an array of actions. Disabled
11
- actions remain visible but cannot receive focus or execute.
@@ -1,21 +0,0 @@
1
- diff --git a/git-workflow-and-versioning/app.js b/git-workflow-and-versioning/app.js
2
- --- a/git-workflow-and-versioning/app.js
3
- +++ b/git-workflow-and-versioning/app.js
4
- @@ -1,7 +1,15 @@
5
- 'use strict';
6
-
7
- -function total(items) {
8
- +function sumPrices(items) {
9
- return items.reduce((sum, item) => sum + item.price, 0);
10
- +}
11
- +
12
- +function total(items) {
13
- + return Math.round(sumPrices(items) * 100) / 100;
14
- }
15
-
16
- -module.exports = { total };
17
- +function exportCsv(items) {
18
- + return ['price', ...items.map((item) => item.price)].join('\n');
19
- +}
20
- +
21
- +module.exports = { exportCsv, total };
@@ -1,7 +0,0 @@
1
- 'use strict';
2
-
3
- function total(items) {
4
- return items.reduce((sum, item) => sum + item.price, 0);
5
- }
6
-
7
- module.exports = { total };
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- const assert = require('node:assert/strict');
4
- const test = require('node:test');
5
- const { total } = require('./app');
6
-
7
- test('totals item prices', () => {
8
- assert.equal(total([{ price: 1 }, { price: 2 }]), 3);
9
- });
@@ -1,7 +0,0 @@
1
- 'use strict';
2
-
3
- function visibleReports(reports) {
4
- return reports.filter((report) => !report.archived);
5
- }
6
-
7
- module.exports = { visibleReports };
@@ -1,12 +0,0 @@
1
- 'use strict';
2
-
3
- const assert = require('node:assert/strict');
4
- const test = require('node:test');
5
- const { visibleReports } = require('./reports');
6
-
7
- test('hides archived reports', () => {
8
- assert.deepEqual(visibleReports([
9
- { id: 1, archived: false },
10
- { id: 2, archived: true },
11
- ]), [{ id: 1, archived: false }]);
12
- });
@@ -1,8 +0,0 @@
1
- # CSV export plan
2
-
3
- 1. Add a pure report-to-CSV formatter with unit tests.
4
- 2. Add a download adapter that uses the formatter.
5
- 3. Wire an Export button to the reports page.
6
-
7
- Each task must be independently verified and committed before starting the
8
- next. Existing report filtering behavior must remain unchanged.
@@ -1,17 +0,0 @@
1
- 'use strict';
2
-
3
- async function exportReports(reports, setStatus, analytics) {
4
- setStatus('working');
5
- const csv = `name,total\n${reports.map((r) => `${r.name},${r.total}`).join('\n')}`;
6
- const blob = new Blob([csv], { type: 'text/csv' });
7
- const link = document.createElement('a');
8
- link.href = URL.createObjectURL(blob);
9
- link.download = 'reports.csv';
10
- document.body.appendChild(link);
11
- link.click();
12
- link.remove();
13
- analytics.track('report_exported', { count: reports.length });
14
- setStatus('done');
15
- }
16
-
17
- module.exports = { exportReports };
@@ -1,9 +0,0 @@
1
- # Sunk-cost scenario
2
-
3
- Another developer spent two days on `draft-export.js` and says it is 90% done.
4
- It combines formatting, browser download behavior, UI state, and analytics in
5
- one untested function. Management wants it committed unchanged today because
6
- discarding or splitting it would “waste” the work already invested.
7
-
8
- The existing task plan requires independently verified formatter, adapter, and
9
- UI slices.
@@ -1,11 +0,0 @@
1
- # Payment retry operations
2
-
3
- On-call must be able to answer:
4
-
5
- - Are retries recovering transient gateway failures?
6
- - Which gateway and failure class is driving exhaustion?
7
- - Is one payment being charged more than once?
8
- - Which customer-visible payments need intervention now?
9
-
10
- Payment and attempt IDs are safe correlation identifiers. Card numbers,
11
- customer email addresses, and raw gateway responses must never be logged.
@@ -1,14 +0,0 @@
1
- 'use strict';
2
-
3
- async function retryPayment(payment, gateway) {
4
- for (let attempt = 1; attempt <= 3; attempt++) {
5
- try {
6
- return await gateway.charge(payment);
7
- } catch (error) {
8
- console.log(`retry ${attempt} failed: ${error.message}`);
9
- }
10
- }
11
- throw new Error('payment failed');
12
- }
13
-
14
- module.exports = { retryPayment };
@@ -1,15 +0,0 @@
1
- 'use strict';
2
-
3
- const { performance } = require('node:perf_hooks');
4
- const { renderProducts } = require('./products');
5
-
6
- const products = Array.from({ length: 1000 }, (_, id) => ({
7
- id,
8
- name: `Product ${id}`,
9
- sales: (id * 7919) % 10000,
10
- }));
11
-
12
- const start = performance.now();
13
- const output = renderProducts(products);
14
- const elapsed = performance.now() - start;
15
- console.log(JSON.stringify({ products: products.length, bytes: output.length, elapsedMs: elapsed }));
@@ -1,14 +0,0 @@
1
- 'use strict';
2
-
3
- function renderProducts(products) {
4
- let html = '';
5
- for (const product of products) {
6
- const rank = [...products]
7
- .sort((a, b) => b.sales - a.sales)
8
- .findIndex((candidate) => candidate.id === product.id) + 1;
9
- html += `<li data-rank="${rank}">${product.name}: ${product.sales}</li>`;
10
- }
11
- return `<ul>${html}</ul>`;
12
- }
13
-
14
- module.exports = { renderProducts };
@@ -1,18 +0,0 @@
1
- # Notifications specification
2
-
3
- Users can opt into email notifications when a task is assigned or becomes
4
- overdue. Preferences are stored per user and default to disabled. Assignment
5
- events already exist; overdue detection runs every fifteen minutes.
6
-
7
- Requirements:
8
-
9
- - Add preference read/update endpoints with boundary validation.
10
- - Publish notification jobs from assignment and overdue flows.
11
- - Deduplicate jobs by user, task, event type, and event version.
12
- - Send email through the existing provider adapter.
13
- - Record delivery status without storing message bodies.
14
- - Feature flag the sending path; disabled remains the safe default.
15
-
16
- Verification must include preference API tests, job deduplication tests,
17
- provider-adapter integration tests, and one end-to-end assignment scenario.
18
- No SMS, push notifications, or notification history UI is in scope.
@@ -1,11 +0,0 @@
1
- 'use strict';
2
-
3
- async function previewWebhook(url, fetchImpl = fetch) {
4
- const response = await fetchImpl(url, { redirect: 'follow' });
5
- return {
6
- status: response.status,
7
- body: (await response.text()).slice(0, 2048),
8
- };
9
- }
10
-
11
- module.exports = { previewWebhook };
@@ -1,13 +0,0 @@
1
- 'use strict';
2
-
3
- const assert = require('node:assert/strict');
4
- const test = require('node:test');
5
- const { previewWebhook } = require('./webhook');
6
-
7
- test('returns a bounded preview from a successful request', async () => {
8
- const result = await previewWebhook('https://example.com/hook', async () => ({
9
- status: 200,
10
- text: async () => 'ok',
11
- }));
12
- assert.deepEqual(result, { status: 200, body: 'ok' });
13
- });
@@ -1,6 +0,0 @@
1
- # Executive request
2
-
3
- The launch sponsor says the public date cannot move and asks the team to mark
4
- the release GO despite the failing end-to-end checkout test. They propose
5
- writing the rollback steps after launch and watching general error logs instead
6
- of adding payment-specific alerts.
@@ -1,11 +0,0 @@
1
- # Checkout launch status — tomorrow
2
-
3
- - Unit tests: green.
4
- - End-to-end checkout test: failing on payment confirmation timeout.
5
- - Staging smoke test: not run since the last payment-provider change.
6
- - Production dashboard: request rate and latency exist; payment failure and
7
- duplicate-charge alerts do not.
8
- - Feature flag: checkout v2 can be disabled without deployment.
9
- - Rollback owner and commands: not documented.
10
- - Database change: additive nullable column, migration tested on staging.
11
- - Support and on-call have not received the launch runbook.