@arbiterforge/ca-pi 0.6.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 (206) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +558 -0
  3. package/package.json +35 -0
  4. package/plugins/ca-pi/CHANGELOG.md +1030 -0
  5. package/plugins/ca-pi/COMMANDS.md +90 -0
  6. package/plugins/ca-pi/ORCHESTRATOR.md +159 -0
  7. package/plugins/ca-pi/SKILLS.md +47 -0
  8. package/plugins/ca-pi/SPRINT.md +142 -0
  9. package/plugins/ca-pi/agents/INDEX.md +31 -0
  10. package/plugins/ca-pi/agents/architecture-drift-reviewer.md +86 -0
  11. package/plugins/ca-pi/agents/auth-crypto-reviewer.md +60 -0
  12. package/plugins/ca-pi/agents/backend-author.md +60 -0
  13. package/plugins/ca-pi/agents/checkpoint-aggregator.md +111 -0
  14. package/plugins/ca-pi/agents/coverage-auditor.md +71 -0
  15. package/plugins/ca-pi/agents/decision-challenger.md +116 -0
  16. package/plugins/ca-pi/agents/dependency-reviewer.md +79 -0
  17. package/plugins/ca-pi/agents/design-quality-reviewer.md +80 -0
  18. package/plugins/ca-pi/agents/finding-triage.md +86 -0
  19. package/plugins/ca-pi/agents/frontend-author.md +64 -0
  20. package/plugins/ca-pi/agents/grader.md +173 -0
  21. package/plugins/ca-pi/agents/infra-author.md +64 -0
  22. package/plugins/ca-pi/agents/map-deps.md +35 -0
  23. package/plugins/ca-pi/agents/map-structure.md +37 -0
  24. package/plugins/ca-pi/agents/migration-reviewer.md +65 -0
  25. package/plugins/ca-pi/agents/scout.md +127 -0
  26. package/plugins/ca-pi/agents/security-reviewer.md +72 -0
  27. package/plugins/ca-pi/agents/tribunal-lens-reviewer.md +65 -0
  28. package/plugins/ca-pi/extensions/codearbiter-child.js +1885 -0
  29. package/plugins/ca-pi/extensions/codearbiter.js +9802 -0
  30. package/plugins/ca-pi/generated/command-catalog.json +197 -0
  31. package/plugins/ca-pi/generated/roles.json +213 -0
  32. package/plugins/ca-pi/helpers/windows-supervisor.js +205 -0
  33. package/plugins/ca-pi/hooks/_activationlib.py +196 -0
  34. package/plugins/ca-pi/hooks/_arbiterstatelib.py +208 -0
  35. package/plugins/ca-pi/hooks/_babysitlib.py +76 -0
  36. package/plugins/ca-pi/hooks/_bashguardlib.py +1667 -0
  37. package/plugins/ca-pi/hooks/_boxlib.py +131 -0
  38. package/plugins/ca-pi/hooks/_colorlib.py +304 -0
  39. package/plugins/ca-pi/hooks/_durabilitylib.py +186 -0
  40. package/plugins/ca-pi/hooks/_entrylib.py +41 -0
  41. package/plugins/ca-pi/hooks/_fmtlib.py +161 -0
  42. package/plugins/ca-pi/hooks/_gitexec.py +45 -0
  43. package/plugins/ca-pi/hooks/_githooks.py +920 -0
  44. package/plugins/ca-pi/hooks/_gitlib.py +110 -0
  45. package/plugins/ca-pi/hooks/_hooklib.py +595 -0
  46. package/plugins/ca-pi/hooks/_host.py +115 -0
  47. package/plugins/ca-pi/hooks/_intentlib.py +242 -0
  48. package/plugins/ca-pi/hooks/_ledgerlib.py +1035 -0
  49. package/plugins/ca-pi/hooks/_metricslib.py +709 -0
  50. package/plugins/ca-pi/hooks/_pathnorm.py +74 -0
  51. package/plugins/ca-pi/hooks/_planfilelib.py +664 -0
  52. package/plugins/ca-pi/hooks/_previewlib.py +193 -0
  53. package/plugins/ca-pi/hooks/_protectedlib.py +312 -0
  54. package/plugins/ca-pi/hooks/_protectedstatelib.py +411 -0
  55. package/plugins/ca-pi/hooks/_provenancelib.py +971 -0
  56. package/plugins/ca-pi/hooks/_prunelib.py +1398 -0
  57. package/plugins/ca-pi/hooks/_prunepolicy.py +235 -0
  58. package/plugins/ca-pi/hooks/_readinjectlib.py +1080 -0
  59. package/plugins/ca-pi/hooks/_releaselib.py +2657 -0
  60. package/plugins/ca-pi/hooks/_scopelib.py +262 -0
  61. package/plugins/ca-pi/hooks/_segmentslib.py +278 -0
  62. package/plugins/ca-pi/hooks/_sensitivelib.py +270 -0
  63. package/plugins/ca-pi/hooks/_sessionlib.py +78 -0
  64. package/plugins/ca-pi/hooks/_sloplib.py +244 -0
  65. package/plugins/ca-pi/hooks/_standuplib.py +214 -0
  66. package/plugins/ca-pi/hooks/_subagentslib.py +219 -0
  67. package/plugins/ca-pi/hooks/_taskboardlib.py +1088 -0
  68. package/plugins/ca-pi/hooks/_updatelib.py +278 -0
  69. package/plugins/ca-pi/hooks/babysit.py +47 -0
  70. package/plugins/ca-pi/hooks/boardsync.py +129 -0
  71. package/plugins/ca-pi/hooks/doctor.py +420 -0
  72. package/plugins/ca-pi/hooks/git-enforce.py +325 -0
  73. package/plugins/ca-pi/hooks/hostapi.py +460 -0
  74. package/plugins/ca-pi/hooks/init-codearbiter.py +225 -0
  75. package/plugins/ca-pi/hooks/metrics.py +62 -0
  76. package/plugins/ca-pi/hooks/migration-pass.py +129 -0
  77. package/plugins/ca-pi/hooks/pi-bridge.py +543 -0
  78. package/plugins/ca-pi/hooks/post-write-edit.py +231 -0
  79. package/plugins/ca-pi/hooks/pre-bash.py +90 -0
  80. package/plugins/ca-pi/hooks/pre-edit.py +284 -0
  81. package/plugins/ca-pi/hooks/pre-read.py +81 -0
  82. package/plugins/ca-pi/hooks/pre-write.py +217 -0
  83. package/plugins/ca-pi/hooks/preview.py +69 -0
  84. package/plugins/ca-pi/hooks/prune-transcript.py +232 -0
  85. package/plugins/ca-pi/hooks/releasehash.py +216 -0
  86. package/plugins/ca-pi/hooks/security-pass.py +139 -0
  87. package/plugins/ca-pi/hooks/session-start.py +1218 -0
  88. package/plugins/ca-pi/hooks/statusline.py +736 -0
  89. package/plugins/ca-pi/hooks/taskwrite.py +351 -0
  90. package/plugins/ca-pi/hooks/update-refresh.py +51 -0
  91. package/plugins/ca-pi/hooks/wire-statusline.py +435 -0
  92. package/plugins/ca-pi/includes/anti-slop-design/INDEX.md +55 -0
  93. package/plugins/ca-pi/includes/anti-slop-design/color.md +43 -0
  94. package/plugins/ca-pi/includes/anti-slop-design/core.md +244 -0
  95. package/plugins/ca-pi/includes/anti-slop-design/images.md +32 -0
  96. package/plugins/ca-pi/includes/anti-slop-design/layout.md +45 -0
  97. package/plugins/ca-pi/includes/anti-slop-design/medium-cli.md +39 -0
  98. package/plugins/ca-pi/includes/anti-slop-design/medium-dataviz.md +43 -0
  99. package/plugins/ca-pi/includes/anti-slop-design/medium-diagram.md +35 -0
  100. package/plugins/ca-pi/includes/anti-slop-design/medium-documents.md +70 -0
  101. package/plugins/ca-pi/includes/anti-slop-design/medium-slides.md +30 -0
  102. package/plugins/ca-pi/includes/anti-slop-design/medium-web.md +39 -0
  103. package/plugins/ca-pi/includes/anti-slop-design/typography.md +51 -0
  104. package/plugins/ca-pi/includes/author-tdd-workflow.md +14 -0
  105. package/plugins/ca-pi/includes/compaction-charter.md +16 -0
  106. package/plugins/ca-pi/includes/cut-docs.md +16 -0
  107. package/plugins/ca-pi/includes/dev-mode.md +30 -0
  108. package/plugins/ca-pi/includes/farm.md +237 -0
  109. package/plugins/ca-pi/includes/fresh-verification.md +14 -0
  110. package/plugins/ca-pi/includes/harvest.md +69 -0
  111. package/plugins/ca-pi/includes/maturity-coverage.md +102 -0
  112. package/plugins/ca-pi/includes/pi-host-notes.md +69 -0
  113. package/plugins/ca-pi/includes/redirect.md +69 -0
  114. package/plugins/ca-pi/includes/reference-map.md +22 -0
  115. package/plugins/ca-pi/includes/review-matrix.md +14 -0
  116. package/plugins/ca-pi/includes/reviewer-contract.md +53 -0
  117. package/plugins/ca-pi/includes/routing-table.md +47 -0
  118. package/plugins/ca-pi/includes/security-gate-record.md +22 -0
  119. package/plugins/ca-pi/includes/smarts/core.md +90 -0
  120. package/plugins/ca-pi/includes/smarts/decision-log-format.md +56 -0
  121. package/plugins/ca-pi/routines/INDEX.md +32 -0
  122. package/plugins/ca-pi/routines/brainstorming/SKILL.md +122 -0
  123. package/plugins/ca-pi/routines/commit-gate/SKILL.md +151 -0
  124. package/plugins/ca-pi/routines/context-check/SKILL.md +85 -0
  125. package/plugins/ca-pi/routines/context-creation/SKILL.md +171 -0
  126. package/plugins/ca-pi/routines/crypto-compliance/SKILL.md +41 -0
  127. package/plugins/ca-pi/routines/debug/SKILL.md +99 -0
  128. package/plugins/ca-pi/routines/decision-lifecycle/SKILL.md +104 -0
  129. package/plugins/ca-pi/routines/decision-lifecycle/references/adr-template.md +74 -0
  130. package/plugins/ca-pi/routines/decision-variance/SKILL.md +147 -0
  131. package/plugins/ca-pi/routines/decompose/SKILL.md +168 -0
  132. package/plugins/ca-pi/routines/dispatching-parallel-agents/SKILL.md +76 -0
  133. package/plugins/ca-pi/routines/executing-plans/SKILL.md +83 -0
  134. package/plugins/ca-pi/routines/finishing-a-development-branch/SKILL.md +91 -0
  135. package/plugins/ca-pi/routines/post-merge-cleanup/SKILL.md +233 -0
  136. package/plugins/ca-pi/routines/refactor/SKILL.md +91 -0
  137. package/plugins/ca-pi/routines/release/SKILL.md +315 -0
  138. package/plugins/ca-pi/routines/secret-handling/SKILL.md +67 -0
  139. package/plugins/ca-pi/routines/security-architecture/SKILL.md +63 -0
  140. package/plugins/ca-pi/routines/skill-author/SKILL.md +108 -0
  141. package/plugins/ca-pi/routines/skill-author/references/skill-template.md +58 -0
  142. package/plugins/ca-pi/routines/subagent-driven-development/SKILL.md +149 -0
  143. package/plugins/ca-pi/routines/subagent-driven-development/references/farm-dispatch.md +145 -0
  144. package/plugins/ca-pi/routines/tdd/SKILL.md +139 -0
  145. package/plugins/ca-pi/routines/tribunal/SKILL.md +109 -0
  146. package/plugins/ca-pi/routines/tribunal/references/ai-markers.md +29 -0
  147. package/plugins/ca-pi/routines/tribunal/references/cost-and-models.md +64 -0
  148. package/plugins/ca-pi/routines/tribunal/references/finding-record.md +27 -0
  149. package/plugins/ca-pi/routines/tribunal/references/issue-filing.md +47 -0
  150. package/plugins/ca-pi/routines/tribunal/references/lenses/appsec.md +22 -0
  151. package/plugins/ca-pi/routines/tribunal/references/lenses/architecture.md +23 -0
  152. package/plugins/ca-pi/routines/tribunal/references/lenses/coverage.md +20 -0
  153. package/plugins/ca-pi/routines/tribunal/references/lenses/infra.md +24 -0
  154. package/plugins/ca-pi/routines/tribunal/references/lenses/migration.md +22 -0
  155. package/plugins/ca-pi/routines/tribunal/references/lenses/observability.md +21 -0
  156. package/plugins/ca-pi/routines/tribunal/references/lenses/performance.md +22 -0
  157. package/plugins/ca-pi/routines/tribunal/references/lenses/reliability.md +23 -0
  158. package/plugins/ca-pi/routines/tribunal/references/lenses/secrets-supply.md +22 -0
  159. package/plugins/ca-pi/routines/tribunal/references/lenses/test-fidelity.md +24 -0
  160. package/plugins/ca-pi/routines/tribunal/references/lenses/typesafety.md +21 -0
  161. package/plugins/ca-pi/routines/tribunal/references/report.md +19 -0
  162. package/plugins/ca-pi/routines/tribunal/references/schemas.md +58 -0
  163. package/plugins/ca-pi/routines/tribunal/references/telemetry.md +28 -0
  164. package/plugins/ca-pi/routines/tribunal/references/triage.md +53 -0
  165. package/plugins/ca-pi/routines/using-git-worktrees/SKILL.md +85 -0
  166. package/plugins/ca-pi/routines/writing-plans/SKILL.md +129 -0
  167. package/plugins/ca-pi/routines/writing-plans/references/farm-plan.md +50 -0
  168. package/plugins/ca-pi/skills/ca-add-dep/SKILL.md +88 -0
  169. package/plugins/ca-pi/skills/ca-adr/SKILL.md +30 -0
  170. package/plugins/ca-pi/skills/ca-adr-status/SKILL.md +30 -0
  171. package/plugins/ca-pi/skills/ca-arbiter/SKILL.md +36 -0
  172. package/plugins/ca-pi/skills/ca-audit/SKILL.md +51 -0
  173. package/plugins/ca-pi/skills/ca-btw/SKILL.md +23 -0
  174. package/plugins/ca-pi/skills/ca-checkpoint/SKILL.md +50 -0
  175. package/plugins/ca-pi/skills/ca-chore/SKILL.md +58 -0
  176. package/plugins/ca-pi/skills/ca-cleanup/SKILL.md +55 -0
  177. package/plugins/ca-pi/skills/ca-commands/SKILL.md +21 -0
  178. package/plugins/ca-pi/skills/ca-commit/SKILL.md +27 -0
  179. package/plugins/ca-pi/skills/ca-conflict/SKILL.md +61 -0
  180. package/plugins/ca-pi/skills/ca-context-check/SKILL.md +32 -0
  181. package/plugins/ca-pi/skills/ca-create-context/SKILL.md +32 -0
  182. package/plugins/ca-pi/skills/ca-debug/SKILL.md +42 -0
  183. package/plugins/ca-pi/skills/ca-decompose/SKILL.md +30 -0
  184. package/plugins/ca-pi/skills/ca-dev/SKILL.md +42 -0
  185. package/plugins/ca-pi/skills/ca-doctor/SKILL.md +44 -0
  186. package/plugins/ca-pi/skills/ca-feature/SKILL.md +105 -0
  187. package/plugins/ca-pi/skills/ca-fix/SKILL.md +42 -0
  188. package/plugins/ca-pi/skills/ca-init/SKILL.md +56 -0
  189. package/plugins/ca-pi/skills/ca-metrics/SKILL.md +80 -0
  190. package/plugins/ca-pi/skills/ca-new-skill/SKILL.md +34 -0
  191. package/plugins/ca-pi/skills/ca-override/SKILL.md +72 -0
  192. package/plugins/ca-pi/skills/ca-pr/SKILL.md +61 -0
  193. package/plugins/ca-pi/skills/ca-preview/SKILL.md +86 -0
  194. package/plugins/ca-pi/skills/ca-prune/SKILL.md +100 -0
  195. package/plugins/ca-pi/skills/ca-reconcile/SKILL.md +43 -0
  196. package/plugins/ca-pi/skills/ca-refactor/SKILL.md +43 -0
  197. package/plugins/ca-pi/skills/ca-release/SKILL.md +57 -0
  198. package/plugins/ca-pi/skills/ca-review/SKILL.md +63 -0
  199. package/plugins/ca-pi/skills/ca-spike/SKILL.md +41 -0
  200. package/plugins/ca-pi/skills/ca-sprint/SKILL.md +44 -0
  201. package/plugins/ca-pi/skills/ca-standup/SKILL.md +112 -0
  202. package/plugins/ca-pi/skills/ca-status/SKILL.md +56 -0
  203. package/plugins/ca-pi/skills/ca-task/SKILL.md +61 -0
  204. package/plugins/ca-pi/skills/ca-threat-model/SKILL.md +45 -0
  205. package/plugins/ca-pi/skills/ca-tribunal/SKILL.md +44 -0
  206. package/plugins/ca-pi/skills/ca-watch/SKILL.md +78 -0
package/README.md ADDED
@@ -0,0 +1,558 @@
1
+ <div align="center">
2
+
3
+ <img src="docs/readme-hero.webp" alt="codeArbiter. Hard gates for agentic coding." width="100%">
4
+
5
+ **Shared enforcement and project-context parity across Claude Code, Codex CLI, and Pi.**
6
+
7
+ One repository-owned governance layer for tests, reviews, security checks, decisions, and durable
8
+ project context. You decide. codeArbiter enforces.
9
+
10
+ <img alt="Claude Code plugin" src="https://img.shields.io/badge/Claude_Code-plugin-d97757">
11
+ <img alt="Codex plugin" src="https://img.shields.io/badge/OpenAI_Codex-plugin-10a37f">
12
+ <img alt="Pi Feature Forge preview" src="https://img.shields.io/badge/ca--pi-Feature_Forge_preview-d97757">
13
+ <img alt="version 2.14.0" src="https://img.shields.io/badge/version-2.14.0-2b7489">
14
+ <img alt="commands" src="https://img.shields.io/badge/commands-40-555">
15
+ <img alt="skills" src="https://img.shields.io/badge/skills-23-555">
16
+ <img alt="agents" src="https://img.shields.io/badge/agents-18-555">
17
+ <img alt="license AGPL v3" src="https://img.shields.io/badge/license-AGPL_v3-3da639">
18
+
19
+ [Start learning](https://arbiterforge.github.io/codeArbiter/learn/)
20
+ &nbsp;&nbsp;·&nbsp;&nbsp;
21
+ [Install](https://arbiterforge.github.io/codeArbiter/getting-started/install/)
22
+ &nbsp;&nbsp;·&nbsp;&nbsp;
23
+ [Browse the reference](https://arbiterforge.github.io/codeArbiter/reference/)
24
+
25
+ <sub>Install it globally. It stays dormant until a repository explicitly opts in.</sub>
26
+
27
+ </div>
28
+
29
+ > [!IMPORTANT]
30
+ > **License notice.** Since v2.6.0, codeArbiter is licensed under the
31
+ > [GNU AGPLv3](LICENSE), a change from its earlier MIT license. Copyright (C) 2026 SUaDtL, who
32
+ > reserves the right to dual-license under separate proprietary terms; commercial licenses are not
33
+ > offered at this time. See [License and contributions](#license-and-contributions).
34
+
35
+ ## Agentic coding, with a record
36
+
37
+ codeArbiter is for teams and power users who let coding agents do consequential work and need more
38
+ than “the model said it passed.” Every request enters a named lane. The lane defines the evidence it
39
+ must produce, the reviewers it must dispatch, and the conditions that stop it.
40
+
41
+ This repository contains four sibling plugins:
42
+
43
+ - `ca` for Claude Code, `ca-codex` for Codex CLI, and `ca-pi` for Pi are the three governance hosts.
44
+ - `ca-sandbox` is the isolated local-Codespace infrastructure plugin.
45
+
46
+ The three governance hosts are generated from one shared surface and use one checked-in
47
+ `.codearbiter/` project store. A repository can move between hosts without losing its specs, plans,
48
+ ADRs, tasks, decisions, or audit history.
49
+
50
+ codeArbiter will not:
51
+
52
+ - write feature code before the required failing test exists;
53
+ - commit on a red suite or outside the commit gate;
54
+ - resolve a `[CONFIRM-NN]` question by guessing;
55
+ - silently reconcile a conflict between the rules, the docs, and the code; or
56
+ - push directly to the default branch or merge without the user.
57
+
58
+ The gates scale to the work. A prose edit takes the small docs lane. A security-sensitive feature
59
+ takes the full spec, test-first, review, and PR path.
60
+
61
+ The Codex path was live-verified on **Codex CLI 0.144.1** with trusted SessionStart injection and a
62
+ real `[H-03]` PreToolUse block. The dated
63
+ [Claude Code + Codex evidence](https://arbiterforge.github.io/codeArbiter/getting-started/claude-code-and-codex/)
64
+ separates continuously verified packaging from the live checks that require a model-backed turn.
65
+
66
+ ## See it catch something
67
+
68
+ The landing page includes a
69
+ [faithful replay of a shipped hook invocation](https://arbiterforge.github.io/codeArbiter/#proof).
70
+ It invokes the real `pre-bash.py` guard, records the source digest, proves the blocked command never
71
+ ran, and preserves the exact stderr and audit effect. It does not pretend that a direct hook replay
72
+ proves host discovery or trust.
73
+
74
+ The operating loop looks like this:
75
+
76
+ ```text
77
+ you /ca:fix the statusline keeps running the old version after an update
78
+
79
+ arbiter route to the regression-test-first fix lane
80
+ failing test -> minimal fix -> focused proof -> full verification
81
+
82
+ you /ca:commit
83
+ arbiter permission -> branch -> tests -> behavioral proof -> diff review
84
+ selective stage -> commit
85
+
86
+ you /ca:pr
87
+ arbiter reviewer fleet challenges the exact diff
88
+ BLOCK findings are resolved before the draft PR can advance
89
+ ```
90
+
91
+ The user owns the decision. The repository keeps the evidence.
92
+
93
+ ## Get running
94
+
95
+ Choose the adapter for the coding host you already use. The
96
+ [host chooser](https://arbiterforge.github.io/codeArbiter/getting-started/choose-your-host/) covers
97
+ stability, command syntax, trust, and platform differences.
98
+
99
+ | Host | Adapter | Command form | Status |
100
+ |---|---|---|---|
101
+ | Claude Code | `ca` | `/ca:feature` | Stable |
102
+ | Codex CLI | `ca-codex` | `$ca-feature` | Stable |
103
+ | Pi | `ca-pi` | `/ca-feature` | Feature Forge `preview` |
104
+
105
+ **Prerequisites:** Python 3 on `PATH` and `git config user.email` set. Pi also requires Node.js
106
+ 22.19+. If Python is missing, Pi installs its final wrappers but blocks mutating calls and points to
107
+ `/ca-doctor`; Claude Code and Codex surface an interpreter breadcrumb instead of silently claiming
108
+ governance is active.
109
+
110
+ ### Claude Code
111
+
112
+ ```text
113
+ /plugin marketplace add arbiterForge/codeArbiter
114
+ /plugin install ca@codearbiter
115
+ ```
116
+
117
+ Approve the normal plugin trust prompt, open the target repository, and continue with
118
+ `/ca:init`.
119
+
120
+ ### Codex CLI
121
+
122
+ The public GitHub-slug flow is **available now**. The repository currently ships `ca-codex 0.6.1`;
123
+ the dated end-to-end public-install record discovered `ca-codex 0.2.4` from release `v2.8.13`.
124
+ Current packaging and shared-core parity are continuously verified, while that dated live-install
125
+ record stays labeled rather than being silently promoted to evidence for a newer adapter:
126
+
127
+ ```text
128
+ codex plugin marketplace add arbiterForge/codeArbiter
129
+ codex plugin add ca-codex@codearbiter
130
+ ```
131
+
132
+ Open `/hooks`, review and trust the `ca-codex` handlers, then start a fresh task. Run `$ca-init` and
133
+ `$ca-doctor`.
134
+
135
+ For development against an unpublished checkout:
136
+
137
+ ```text
138
+ git clone https://github.com/arbiterForge/codeArbiter
139
+ cd codeArbiter
140
+ codex plugin marketplace add .
141
+ codex plugin add ca-codex@codearbiter
142
+ ```
143
+
144
+ ### Pi
145
+
146
+ > [!NOTE]
147
+ > `ca-pi` is a Feature Forge `preview`. It is available for real use now, and you are welcome to
148
+ > install it, use it in repositories, and report what you find. Its automated and hosted promotion
149
+ > matrix is green; broader real-world evidence is still required before codeArbiter claims
150
+ > 100% validation or stable status.
151
+
152
+ The quickest install is the npm channel: `pi install npm:@arbiterforge/ca-pi` (ADR-0029). For the
153
+ reproducible pinned install, list the independently versioned tags, choose one exact result, then
154
+ inspect the installed package, grant project trust, and start a fresh session:
155
+
156
+ ```sh
157
+ git ls-remote --tags --refs https://github.com/arbiterForge/codeArbiter.git "ca-pi-v*"
158
+ pi install git:github.com/arbiterForge/codeArbiter@ca-pi-v<version>
159
+ pi list
160
+ pi config
161
+ ```
162
+
163
+ Replace `<version>` with the numeric suffix from the chosen tag while retaining the full
164
+ `ca-pi-v...` tag in the install source.
165
+
166
+ Pi 0.80.5 and Pi 0.80.10 are the supported hosts for this release line. Generated aliases use `/ca-*`;
167
+ `/skill:ca-*` is the host-native fallback. Every `ca-pi-v*` tag is also published to npm as
168
+ `npm:@arbiterforge/ca-pi` with provenance (ADR-0029); the pinned Git tag remains the reproducible
169
+ install. The [Pi runbook](./docs/pi-parity-testing.md) covers isolated install, trust, verification,
170
+ shared-state continuity, and uninstall.
171
+
172
+ ### Protect the first repository
173
+
174
+ Use a disposable Git repository for the first run. Add at least one meaningful source file, then
175
+ invoke the host-native forms below:
176
+
177
+ | Outcome | Claude Code | Codex CLI | Pi |
178
+ |---|---|---|---|
179
+ | Scaffold project state | `/ca:init` | `$ca-init` | `/ca-init` |
180
+ | Prove enforcement | `/ca:doctor` | `$ca-doctor` | `/ca-doctor` |
181
+ | Read live state | `/ca:status` | `$ca-status` | `/ca-status` |
182
+
183
+ `init` creates `.codearbiter/` and routes an existing codebase to `create-context` or a greenfield
184
+ project to `decompose`. `doctor` must report a healthy interpreter, current payload, and H-03
185
+ live-fire probe before you treat the repository as governed.
186
+
187
+ Follow the complete
188
+ [first-repository walkthrough](https://arbiterforge.github.io/codeArbiter/getting-started/quickstart/)
189
+ for expected output, proof, and recovery.
190
+
191
+ ## The docs are the operating manual
192
+
193
+ The site is designed as a continuous path from first contact to source-backed operation:
194
+
195
+ | Need | Start here | You finish able to... |
196
+ |---|---|---|
197
+ | Understand the promise | [What is codeArbiter](https://arbiterforge.github.io/codeArbiter/overview/) | explain command, route, dispatch, gate, and ship |
198
+ | Choose and install a host | [Start](https://arbiterforge.github.io/codeArbiter/getting-started/choose-your-host/) | install, trust, activate, and verify one adapter |
199
+ | Learn in order | [Learning path](https://arbiterforge.github.io/codeArbiter/learn/) | progress from foundation through the power-user capstone |
200
+ | Run daily work | [Workflows](https://arbiterforge.github.io/codeArbiter/guides/feature-lane/) | select and complete the smallest correct lane |
201
+ | Understand the model | [Concept map](https://arbiterforge.github.io/codeArbiter/concepts/) | trace routing, decisions, context, review, and audit evidence |
202
+ | Diagnose a problem | [Troubleshooting](https://arbiterforge.github.io/codeArbiter/guides/troubleshooting/) | follow a symptom to a deterministic recovery |
203
+ | Look up exact behavior | [Reference](https://arbiterforge.github.io/codeArbiter/reference/) | inspect generated commands, skills, agents, hooks, and configuration |
204
+ | Evaluate preview work | [Feature Forge](https://arbiterforge.github.io/codeArbiter/feature-forge/overview/) | opt in, verify the off switch, and understand the promotion bar |
205
+
206
+ Command, skill, agent, and hook-gate reference pages are generated from shipped source on every site
207
+ build. Hand-authored guides teach the workflow; generated pages define the exact current surface.
208
+
209
+ ## How governance works
210
+
211
+ ```mermaid
212
+ flowchart LR
213
+ I["host-native command"] --> R["owning skill"]
214
+ R --> A["author or operator action"]
215
+ A --> V["tests + focused proof"]
216
+ V --> F["matched reviewer fleet"]
217
+ F --> G{"gate clear?"}
218
+ G -->|no| X["named finding or user decision"]
219
+ X --> A
220
+ G -->|yes| P["selective commit + draft PR"]
221
+ ```
222
+
223
+ Activation is explicit and per repository. Claude Code and Codex check
224
+ `.codearbiter/CONTEXT.md` at SessionStart. Pi checks the same file through its `session_start`
225
+ extension event and also requires affirmative project trust. Without `arbiter: enabled`, the global
226
+ install is dormant: no repository persona, no repository gates, and no governance row.
227
+
228
+ The project record lives beside the code:
229
+
230
+ ```text
231
+ .codearbiter/
232
+ ├── CONTEXT.md activation, vocabulary, maturity, current objective
233
+ ├── tech-stack.md approved technologies and versions
234
+ ├── coding-standards.md implementation and verification rules
235
+ ├── security-controls.md security contract reviewers evaluate
236
+ ├── open-tasks.md durable task board
237
+ ├── open-questions.md unresolved [CONFIRM-NN] decisions
238
+ ├── decisions/ numbered ADRs
239
+ ├── specs/ and plans/ approved intent and execution
240
+ ├── sprint-log.md SMARTS-scored autonomous decisions
241
+ ├── checkpoints/ periodic reviewer sweeps
242
+ ├── audits/ and reports/ assembled evidence
243
+ └── overrides.log append-only sanctioned bypass record
244
+ ```
245
+
246
+ The [.codearbiter directory reference](https://arbiterforge.github.io/codeArbiter/codearbiter-directory/)
247
+ explains who creates, reads, and updates every artifact, plus its recovery rules.
248
+
249
+ ### The hard gates
250
+
251
+ - No feature code before `tdd` Phase 1 completes.
252
+ - No commit outside `commit-gate`, and never with a red suite.
253
+ - No `[CONFIRM-NN]` resolved by guessing.
254
+ - No silent reconciliation of rule conflicts; route to `/ca:conflict`.
255
+ - No raw secret stored in the repository, logs, images, or prompts.
256
+ - No direct write to the default branch and no force-push.
257
+ - No ADR outside `/ca:adr`, with explicit user attribution.
258
+ - Every `/ca:override`, `/ca:dev` entry/exit, and sprint auto-decision is durable and attributable.
259
+ - H-18 activation protection has no in-session override path; disabling a repository requires an
260
+ external editor and an explicit audit record.
261
+
262
+ Security and audit-trail correctness outrank data integrity, maintainability, performance, and
263
+ velocity. A non-obvious tradeoff cites the level at which it was made.
264
+
265
+ ### SMARTS: bounded autonomy, explicit reasoning
266
+
267
+ SMARTS evaluates Scalable, Maintainable, Available, Reliable, Testable, and Securable properties.
268
+ Each option gets a concrete verdict and evidence, followed by a `strong`, `moderate`, or `tied`
269
+ recommendation. The user still decides.
270
+
271
+ `/ca:sprint` uses the same lenses for bounded non-hard decisions and writes every call to
272
+ `.codearbiter/sprint-log.md` with a confidence flag. Security boundaries, irreversible operations,
273
+ gate bypasses, merges, and unresolved questions remain true stops. See
274
+ [SMARTS](https://arbiterforge.github.io/codeArbiter/concepts/smarts/) and
275
+ [autonomous sprints](https://arbiterforge.github.io/codeArbiter/guides/autonomous-sprints/).
276
+
277
+ ## Core lanes
278
+
279
+ | Intent | Claude Code | What the lane proves |
280
+ |---|---|---|
281
+ | New behavior | `/ca:feature "desc"` | approved spec and plan, test-first implementation, review, commit, PR |
282
+ | Autonomous delivery | `/ca:sprint "goal"` | one interactive design gate, persisted work, logged SMARTS decisions |
283
+ | Confirmed defect | `/ca:fix "bug"` | failing regression test before the minimal fix |
284
+ | Unknown cause | `/ca:debug "symptom"` | investigation and root-cause decision before any fix lane |
285
+ | Structural change | `/ca:refactor "surface"` | behavioral parity through unchanged pre-existing tests |
286
+ | Dependency | `/ca:add-dep "pkg"` | license, provenance, maintenance, CVE, and supply-chain review |
287
+ | Architecture decision | `/ca:adr "title"` | numbered, dated, user-attributed decision record |
288
+ | Commit | `/ca:commit` | the full commit gate and selective staging |
289
+ | Pull request | `/ca:pr` | cleared BLOCK findings and a draft PR, never a direct default-branch write |
290
+
291
+ Claude Code's catalog is [`plugins/ca/COMMANDS.md`](./plugins/ca/COMMANDS.md). Codex uses the
292
+ generated [`plugins/ca-codex/COMMANDS.md`](./plugins/ca-codex/COMMANDS.md), and Pi uses the generated
293
+ [`plugins/ca-pi/COMMANDS.md`](./plugins/ca-pi/COMMANDS.md). Current generated counts are `ca: 40`,
294
+ `ca-codex: 38`, and `ca-pi: 39`. Codex omits `statusline` and `prune`; Pi omits `statusline` and uses
295
+ native compaction for pruning.
296
+
297
+ <details>
298
+ <summary><strong>All 40 Claude Code commands</strong></summary>
299
+
300
+ ### Implementation
301
+
302
+ | Command | Purpose |
303
+ |---|---|
304
+ | `/ca:feature "desc"` | Spec-driven feature; the only entry to new implementation |
305
+ | `/ca:sprint "goal"` | Autonomous spec-to-PR sprint with SMARTS-scored decisions |
306
+ | `/ca:fix "bug"` | Regression-test-first defect fix |
307
+ | `/ca:refactor "surface"` | Behavior-preserving restructure behind a parity gate |
308
+ | `/ca:debug "symptom"` | Investigate, identify root cause, then choose the owning lane |
309
+ | `/ca:chore <docs\|deps\|revert>` | Type-scaled non-behavioral lane |
310
+ | `/ca:spike "question"` | Throwaway exploration that never merges |
311
+
312
+ ### Commit and ship
313
+
314
+ | Command | Purpose |
315
+ |---|---|
316
+ | `/ca:commit` | The only path to a commit |
317
+ | `/ca:pr` | Clear review findings and open or finish a pull request |
318
+ | `/ca:watch <PR>` | Watch hosted CI, diagnose red, offer merge on green |
319
+ | `/ca:review [path]` | Reviewer-fleet pass over the current diff |
320
+ | `/ca:checkpoint` | Lean periodic whole-codebase reviewer sweep |
321
+ | `/ca:tribunal [scope-path]` | Deep, resumable eleven-lens audit; never a routine gate |
322
+ | `/ca:release [--dry-run]` | Target-aware SemVer, changelog, and annotated tag |
323
+ | `/ca:add-dep "pkg"` | Vet license, provenance, maintenance, CVEs, and supply chain |
324
+
325
+ ### Decisions
326
+
327
+ | Command | Purpose |
328
+ |---|---|
329
+ | `/ca:adr "title"` | Author a numbered, user-attributed ADR |
330
+ | `/ca:adr-status [--adr N]` | Inspect ADR health and supersession chains |
331
+ | `/ca:reconcile ["scope"]` | Reconcile architectural artifacts through SMARTS |
332
+ | `/ca:conflict "description"` | Stop work and surface an unresolvable rule conflict |
333
+ | `/ca:threat-model "scope"` | Optional lightweight STRIDE pass |
334
+
335
+ ### Project and meta
336
+
337
+ | Command | Purpose |
338
+ |---|---|
339
+ | `/ca:decompose` | Greenfield interview that populates `.codearbiter/` |
340
+ | `/ca:create-context` | Brownfield source scout and context backfill |
341
+ | `/ca:init` | Scaffold the shared project-state store |
342
+ | `/ca:status` | Show stage, branch, tasks, questions, and recent overrides |
343
+ | `/ca:task` | The only sanctioned writer for `open-tasks.md` |
344
+ | `/ca:statusline` | Install or remove the Claude Code statusline |
345
+ | `/ca:doctor` | Prove interpreter, payload, hooks, cache, and live-fire behavior |
346
+ | `/ca:preview` | Read-only prediction of reviewers plus a state-free secret scan |
347
+ | `/ca:context-check` | Manual provenance-drift audit |
348
+ | `/ca:standup` | Read repo hygiene, then confirm safe cleanup actions one by one |
349
+ | `/ca:cleanup` | Finish an already-merged branch with ancestry proof |
350
+ | `/ca:new-skill "gap"` | Author a new skill only after proving the gap |
351
+ | `/ca:btw "question"` | Lightweight project Q&A with no state change |
352
+ | `/ca:override "reason"` | Logged, attributed bypass for one immediate action when the gate permits it; never H-18 |
353
+ | `/ca:audit [range]` | Assemble a dated governance packet |
354
+ | `/ca:metrics [--window N]` | Read-only override, small-lane, and confidence trends |
355
+ | `/ca:prune [status\|dry\|run\|audit\|on\|off]` | Inspect or trim transcript bulk |
356
+ | `/ca:commands` | Show the public catalog |
357
+
358
+ ### Maintainer
359
+
360
+ | Command | Purpose |
361
+ |---|---|
362
+ | `/ca:dev ["note"]` | Enter the env-gated, logged maintainer override |
363
+ | `/ca:arbiter` | Exit dev mode and restore orchestration |
364
+
365
+ </details>
366
+
367
+ ## Trust and host boundaries
368
+
369
+ The blocking enforcement core is local and Python-stdlib-only. It reads repository files and local
370
+ Git state. It does not send repository content to a codeArbiter account; there is no hosted
371
+ codeArbiter control plane.
372
+
373
+ Two background reads are separate from blocking evaluation:
374
+
375
+ - SessionStart may run a detached, read-only `git fetch` against the repository's configured remote
376
+ to report hygiene state.
377
+ - A once-daily, fail-silent update check reads the public GitHub Releases API. It sends no repository
378
+ content and never applies an update.
379
+
380
+ The optional `/ca:sprint --farm` preview is a distinct opt-in network feature. It sends byte-capped,
381
+ secret-redacted task context to the OpenAI-compatible endpoint you configure and is inert without
382
+ the flag and provider key.
383
+
384
+ See [Enforcement and Security](https://arbiterforge.github.io/codeArbiter/enforcement/) and the
385
+ [Hooks Reference](https://arbiterforge.github.io/codeArbiter/hooks/) for the exact event, read,
386
+ write, block, and network contract.
387
+
388
+ ### Pi operational contract
389
+
390
+ `ca-pi` installs a rich footer in interactive parent sessions. The governance row appears only when
391
+ the repository is enabled and affirmatively trusted; rate-window telemetry is omitted rather than
392
+ fabricated. Execute mode asks before governed mutations and external side effects. Plan mode is
393
+ read-only except for the current canonical spec, plan, and plan ledger.
394
+
395
+ Background jobs are bounded and session-only, and are never restored from Pi session entries.
396
+ Unverified cleanup marks the manager unhealthy, blocks later launches, and points to `/ca-doctor`.
397
+ Footer, permission, plan, and background surfaces are parent-interactive only and never recurse into
398
+ hardened children.
399
+
400
+ The human-readable generated catalog is `plugins/ca-pi/SKILLS.md`. On a cold checkout, the platform
401
+ aggregate reports `missing_prerequisite` and directs the operator to
402
+ `npm --prefix plugins/ca-pi/tools ci --ignore-scripts`; it never installs dependencies on the
403
+ verification path.
404
+
405
+ ## Feature Forge
406
+
407
+ <div align="center">
408
+ <img src="docs/feature-forge.webp" alt="A dark machined gate under controlled amber heat: preview work accumulating evidence before promotion." width="100%">
409
+ </div>
410
+
411
+ Preview features are built, tested, and shipping, but they remain opt-in and dormant until
412
+ real-world evidence earns stable status. A preview label never weakens a hard gate and never hides
413
+ spending or trust requirements.
414
+
415
+ | Feature | Opt-in | Promotion evidence still needed |
416
+ |---|---|---|
417
+ | `ca-pi` | install a pinned `ca-pi-v*` Git tag | diverse real repositories, providers, terminals, and workflows |
418
+ | Live transcript pruning | `CODEARBITER_PRUNE=dry` | real-session context savings and false-positive data |
419
+ | Pluggable execution farm | `/ca:sprint --farm` | per-task pass rates, cost, and gate-escape evidence |
420
+ | `ca-sandbox` | install the sibling plugin | real untrusted repositories and interactive `--with-claude` use |
421
+
422
+ The source-backed
423
+ [live Forge catalog](https://arbiterforge.github.io/codeArbiter/feature-forge/whats-in-the-forge/)
424
+ names every opt-in, off switch, dependency, trust boundary, and promotion signal.
425
+
426
+ The farm preview uses one checked-in `farm.js` backend across supported hosts. A Pi-native embedded
427
+ farm worker is a future spike, not a shipping dependency or second engine. `ca-pi` distributes as
428
+ the pinned Git tag plus the CI-published `npm:@arbiterforge/ca-pi` package (ADR-0029).
429
+
430
+ ## Operator details
431
+
432
+ <details>
433
+ <summary><strong>Claude Code statusline</strong></summary>
434
+
435
+ Run `/ca:statusline` to install the optional token-aware statusline.
436
+
437
+ <div align="center">
438
+ <img alt="Annotated codeArbiter statusline" src="./site/public/diagrams/statusline.png" width="880">
439
+ </div>
440
+
441
+ Folder, Git state, rate limits, token use, cost, context headroom, model, effort, and session age
442
+ render globally. The governance row activates only in an enabled repository. Running
443
+ `/ca:statusline` again restores the previous statusline.
444
+
445
+ </details>
446
+
447
+ <details>
448
+ <summary><strong>Updates and configuration</strong></summary>
449
+
450
+ Update the Claude marketplace explicitly:
451
+
452
+ ```text
453
+ /plugin marketplace update codearbiter
454
+ ```
455
+
456
+ The operator-facing environment-variable catalog, defaults, accepted values, safety boundaries,
457
+ and verification steps live in the
458
+ [Configuration Reference](https://arbiterforge.github.io/codeArbiter/reference/configuration/).
459
+ Release notes are in the [Changelog](https://arbiterforge.github.io/codeArbiter/changelog/).
460
+
461
+ </details>
462
+
463
+ <details>
464
+ <summary><strong>Turn it off or uninstall it</strong></summary>
465
+
466
+ A repository without `.codearbiter/CONTEXT.md` carrying `arbiter: enabled` is dormant. Remove `ca`
467
+ with Claude Code's plugin manager, run `codex plugin remove ca-codex@codearbiter` for Codex, or use
468
+ `pi remove` with the pinned Git source for Pi. The repository-owned `.codearbiter/` record survives,
469
+ so another supported host can keep using it.
470
+
471
+ Follow [Uninstall and Disable](https://arbiterforge.github.io/codeArbiter/guides/uninstalling/) for
472
+ host-specific removal, pinning, and verification.
473
+
474
+ </details>
475
+
476
+ ## Repository map
477
+
478
+ ```text
479
+ .claude-plugin/marketplace.json Claude marketplace
480
+ .agents/plugins/marketplace.json Codex marketplace
481
+ core/ canonical shared policy and generated surface
482
+ plugins/ca/ Claude Code governance host
483
+ plugins/ca-codex/ Codex governance host
484
+ plugins/ca-pi/ Pi governance host (Feature Forge preview)
485
+ plugins/ca-sandbox/ isolated local-Codespace plugin
486
+ site/ Astro/Starlight documentation product
487
+ docs/ architecture, parity runbooks, reports, and media
488
+ .codearbiter/ this repository's own governed project state
489
+ ```
490
+
491
+ `plugins/ca/` contains the always-on orchestrator, public commands, gated skills, dispatched agents,
492
+ hooks, and farm tooling. The [architecture docs](./docs/architecture.md), [parity ledger](./docs/parity.md),
493
+ and [full hook contract](./docs/hooks.md) are the maintainer entry points.
494
+
495
+ <details>
496
+ <summary><strong>OpenAI Build Week submission record</strong></summary>
497
+
498
+ codeArbiter predates OpenAI Build Week. The submitted work, added July 13 through July 21, 2026,
499
+ delivered the Pi host plus a corrective campaign over the shared governance core. It is consolidated
500
+ in [PR #313](https://github.com/arbiterForge/codeArbiter/pull/313) at verified implementation head
501
+ `ec64809c1b6c32f69e3d9787ab205f7bbd563d50`.
502
+
503
+ Codex was the primary development and orchestration environment. GPT-5.6 was used to design and
504
+ implement the Pi adapter, investigate live failures, review older paths, and consolidate corrections
505
+ across permissions, Windows process-tree cleanup, provenance, audit integrity, generated-source
506
+ drift, CI contracts, and documentation.
507
+
508
+ The final candidate passed the six Pi platform cells for Pi 0.80.5 and 0.80.10 on Windows, macOS,
509
+ and Linux, plus security analysis, CodeQL, shared-core contracts, generated-surface contracts, and
510
+ the repository's final verifier. Sanitized evidence:
511
+
512
+ - [`docs/reports/pi-support/promotion.md`](docs/reports/pi-support/promotion.md)
513
+ - [`docs/reports/pi-support/promotion.json`](docs/reports/pi-support/promotion.json)
514
+ - [`docs/pi-parity-testing.md`](docs/pi-parity-testing.md)
515
+
516
+ Judge quick start for the immutable candidate:
517
+
518
+ ```text
519
+ pi install git:github.com/arbiterForge/codeArbiter@ec64809c1b6c32f69e3d9787ab205f7bbd563d50
520
+ pi list
521
+ pi config
522
+ ```
523
+
524
+ Inspect the repository, grant project trust, start a fresh Pi session, then run `/ca-init` and
525
+ `/ca-doctor`.
526
+
527
+ </details>
528
+
529
+ ## Project history
530
+
531
+ codeArbiter v2 is a ground-up rebuild of the earlier vendored `.agents/` framework as a native,
532
+ multi-host plugin system. The complete record is in [`CHANGELOG.md`](./CHANGELOG.md) and the
533
+ [site changelog](https://arbiterforge.github.io/codeArbiter/changelog/). The v1 implementation
534
+ remains available in early repository history.
535
+
536
+ ## License and contributions
537
+
538
+ codeArbiter is licensed under the
539
+ [GNU Affero General Public License v3.0](./LICENSE) (AGPLv3). You may use, study, modify, and
540
+ redistribute it under those terms. AGPLv3 section 13 also applies when a modified version is run as a
541
+ network service.
542
+
543
+ The AGPLv3 transition applies from v2.6.0 forward. Earlier releases remain under the license they
544
+ shipped with.
545
+
546
+ **Open source.** codeArbiter is available under AGPLv3 for open-source use, free of charge.
547
+
548
+ **Commercial licensing.** SUaDtL retains the copyright and reserves the right to offer the project
549
+ under separate proprietary terms. Commercial licenses are not being offered at this time. Inquiries
550
+ may be made through GitHub if AGPLv3 does not fit a use case.
551
+
552
+ **Contributions.** Future community contributions require a Contributor License Agreement that
553
+ permits relicensing under AGPLv3 and proprietary terms. See [`CLA.md`](./CLA.md). The CLA is a
554
+ template pending legal review and is not yet in force.
555
+
556
+ <div align="center">
557
+ <sub>Built for Claude Code, Codex CLI, and Pi.</sub>
558
+ </div>
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@arbiterforge/ca-pi",
3
+ "version": "0.6.0",
4
+ "license": "AGPL-3.0-only",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/arbiterForge/codeArbiter.git"
8
+ },
9
+ "engines": {
10
+ "node": ">=22.19.0"
11
+ },
12
+ "publishConfig": {
13
+ "access": "public",
14
+ "provenance": true
15
+ },
16
+ "files": [
17
+ "plugins/ca-pi/*.md",
18
+ "plugins/ca-pi/agents/",
19
+ "plugins/ca-pi/extensions/",
20
+ "plugins/ca-pi/generated/",
21
+ "plugins/ca-pi/helpers/",
22
+ "plugins/ca-pi/hooks/",
23
+ "plugins/ca-pi/includes/",
24
+ "plugins/ca-pi/routines/",
25
+ "plugins/ca-pi/skills/"
26
+ ],
27
+ "pi": {
28
+ "extensions": [
29
+ "./plugins/ca-pi/extensions/codearbiter.js"
30
+ ],
31
+ "skills": [
32
+ "./plugins/ca-pi/skills"
33
+ ]
34
+ }
35
+ }