nitm-ai-dev-toolkit 3.0.20 → 3.0.22

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.
@@ -136,16 +136,16 @@ You are helping to bootstrap AI instructions for this monorepo by analyzing the
136
136
  - `.claude/rules-snippets/*.md` (rules content — source of truth)
137
137
  - `.claude/prompt-snippets/*.md` (prompt content — source of truth)
138
138
  - `.claude/agents-snippets/*.md` (agent definitions — source of truth)
139
- - `.opencode/opencode.json` (OpenCode configuration — ⚠️ see schema validation below)
139
+ - `.opencode/opencode.jsonc` (OpenCode configuration — ⚠️ see schema validation below)
140
140
  - `.opencode/commands/*.md` (OpenCode commands)
141
141
  - `.opencode/rules/*.md` (OpenCode rules)
142
142
  - `.opencode/agents/*.md` (OpenCode agents)
143
143
  - `.toolkit-version` (version tracking)
144
144
  - `CLAUDE.md` (if it contains placeholders)
145
145
 
146
- **⚠️ OpenCode `opencode.json` Schema Validation:**
146
+ **⚠️ OpenCode `opencode.jsonc` Schema Validation:**
147
147
 
148
- When creating or modifying `.opencode/opencode.json`, **only use supported top-level keys**. The schema is defined at `https://opencode.ai/config.json`. Adding unsupported keys will cause validation errors.
148
+ When creating or modifying `.opencode/opencode.jsonc`, **only use supported top-level keys**. The schema is defined at `https://opencode.ai/config.json`. Adding unsupported keys will cause validation errors.
149
149
 
150
150
  **Supported top-level keys:** `$schema`, `instructions`, `skills`, `agent`, `default_agent`, `model`, `small_model`, `provider`, `mcp`, `tools`, `permission`, `lsp`, `formatter`, `server`, `shell`, `command`, `plugin`, `watcher`, `snapshot`, `share`, `autoupdate`, `compaction`, `attachment`, `logLevel`, `disabled_providers`, `enabled_providers`, `tool_output`, `enterprise`, `experimental`
151
151
 
@@ -174,17 +174,17 @@ After replacing placeholders, update the `paths:` frontmatter in `.claude/rules/
174
174
 
175
175
  **Review each path-scoped rule and adjust paths to match your monorepo layout:**
176
176
 
177
- | Rule File | Default Paths | Adjust To Match |
178
- | ---------------------------------------- | -------------------------------------------------------------------------------------------------------- | ---------------------------------------------- |
179
- | `api-server.md` | `src/server/**`, `apps/**/server/**`, `**/*.server.*` | Your API app directories (e.g., `apps/api/**`) |
180
- | `component-structure.md` | `src/components/**`, `apps/**/components/**`, `packages/**/components/**`, `**/*.{vue,tsx,jsx}` | Your UI app and design system package paths |
181
- | `core-libraries.md` | `src/**`, `apps/**`, `packages/**` | Adjust if your workspace dirs differ |
182
- | `logging.md` | `src/**`, `apps/**`, `packages/**` | Adjust if your workspace dirs differ |
183
- | `logging-comments.md` | `src/**`, `apps/**`, `packages/**` | Adjust if your workspace dirs differ |
184
- | `prisma-migrations.md` | `prisma/**`, `**/migrations/**`, `**/*.prisma` | Your ORM/migration directories |
185
- | `server-client-separation.md` | `src/**`, `apps/**`, `packages/**` | Focus on apps with server+client code |
186
- | `testing-quality.md` | `**/*.{test,spec}.*`, `tests/**`, `apps/**/tests/**`, `packages/**/tests/**` | Your test directories and naming conventions |
187
- | `ui-accessibility.md` | `src/components/**`, `apps/**/components/**`, `packages/**/components/**`, `**/*.{vue,tsx,jsx,css,scss}` | Your UI app and component package paths |
177
+ | Rule File | Default Paths | Adjust To Match |
178
+ | ----------------------------- | -------------------------------------------------------------------------------------------------------- | ---------------------------------------------- |
179
+ | `api-server.md` | `src/server/**`, `apps/**/server/**`, `**/*.server.*` | Your API app directories (e.g., `apps/api/**`) |
180
+ | `component-structure.md` | `src/components/**`, `apps/**/components/**`, `packages/**/components/**`, `**/*.{vue,tsx,jsx}` | Your UI app and design system package paths |
181
+ | `core-libraries.md` | `src/**`, `apps/**`, `packages/**` | Adjust if your workspace dirs differ |
182
+ | `logging.md` | `src/**`, `apps/**`, `packages/**` | Adjust if your workspace dirs differ |
183
+ | `logging-comments.md` | `src/**`, `apps/**`, `packages/**` | Adjust if your workspace dirs differ |
184
+ | `prisma-migrations.md` | `prisma/**`, `**/migrations/**`, `**/*.prisma` | Your ORM/migration directories |
185
+ | `server-client-separation.md` | `src/**`, `apps/**`, `packages/**` | Focus on apps with server+client code |
186
+ | `testing-quality.md` | `**/*.{test,spec}.*`, `tests/**`, `apps/**/tests/**`, `packages/**/tests/**` | Your test directories and naming conventions |
187
+ | `ui-accessibility.md` | `src/components/**`, `apps/**/components/**`, `packages/**/components/**`, `**/*.{vue,tsx,jsx,css,scss}` | Your UI app and component package paths |
188
188
 
189
189
  **Common monorepo adjustments:**
190
190
 
@@ -243,24 +243,24 @@ The `tools:` block (Claude Code, GitHub Copilot) and `permission:` block (OpenCo
243
243
 
244
244
  **1. Capability baseline per role** — what the agent functionally needs:
245
245
 
246
- | Agent | read | search | write | edit | terminal/bash | spawn subagents |
247
- |-------|------|--------|-------|------|---------------|-----------------|
248
- | Feature Builder, TDD (coordinators) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
249
- | Backend Architect, Frontend Developer, API Specialist, Admin Portal, Implementer, Red, Green, Refactor | ✓ | ✓ | ✓ | ✓ | ✓ | – |
250
- | Documenter | ✓ | ✓ | ✓ | ✓ | ✓ (doc generators) | – |
251
- | Planner | ✓ | ✓ | ✓ (persist plan) | – | ✓ (git log, test discovery) | – |
252
- | Reviewer | ✓ | ✓ | – | – | ✓ (git diff, tests) | – |
253
- | Researcher | ✓ | ✓ | – | – | – | – |
246
+ | Agent | read | search | write | edit | terminal/bash | spawn subagents |
247
+ | ------------------------------------------------------------------------------------------------------ | ---- | ------ | ---------------- | ---- | --------------------------- | --------------- |
248
+ | Feature Builder, TDD (coordinators) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
249
+ | Backend Architect, Frontend Developer, API Specialist, Admin Portal, Implementer, Red, Green, Refactor | ✓ | ✓ | ✓ | ✓ | ✓ | – |
250
+ | Documenter | ✓ | ✓ | ✓ | ✓ | ✓ (doc generators) | – |
251
+ | Planner | ✓ | ✓ | ✓ (persist plan) | – | ✓ (git log, test discovery) | – |
252
+ | Reviewer | ✓ | ✓ | – | – | ✓ (git diff, tests) | – |
253
+ | Researcher | ✓ | ✓ | – | – | – | – |
254
254
 
255
255
  **2. Translate the baseline to each platform's syntax:**
256
256
 
257
- | Capability | Claude Code | GitHub Copilot | OpenCode (`permission:`) | Cursor |
258
- |-----------|-------------|----------------|--------------------------|--------|
259
- | read | `Read` | `read` | default | default |
260
- | search | `Grep` | `search` | default | default |
261
- | write / edit files | `Write`, `Edit` | `edit` | `edit: allow` | default |
262
- | terminal | `Bash(*)` | `runInTerminal`, `terminalLastCommand` | `bash: allow` | default |
263
- | spawn subagents | `agent` | n/a | `task: allow` | default |
257
+ | Capability | Claude Code | GitHub Copilot | OpenCode (`permission:`) | Cursor |
258
+ | ------------------ | --------------- | -------------------------------------- | ------------------------ | ------- |
259
+ | read | `Read` | `read` | default | default |
260
+ | search | `Grep` | `search` | default | default |
261
+ | write / edit files | `Write`, `Edit` | `edit` | `edit: allow` | default |
262
+ | terminal | `Bash(*)` | `runInTerminal`, `terminalLastCommand` | `bash: allow` | default |
263
+ | spawn subagents | `agent` | n/a | `task: allow` | default |
264
264
 
265
265
  > **Cursor note:** these templates declare no `tools:` field, so Cursor subagents inherit the full default toolset. Read-only intent (Researcher, Reviewer) is enforced by the agent's instructions, not tool gating. If your Cursor version supports per-agent tool restriction, add a `tools:` field to match the baseline.
266
266
 
@@ -316,7 +316,7 @@ This template bundles issue tracker skills in `.agents/skills/`. Verify the corr
316
316
 
317
317
  | Detected Tracker | Required Skills | Expected Files |
318
318
  | ---------------- | ------------------------------ | ----------------------------------------------------------------------------- |
319
- | Jira | `issue-tracker` + `acli` | `.agents/skills/issue-tracker/SKILL.md`, `.agents/skills/acli/SKILL.md` |
319
+ | Jira | `issue-tracker` + `acli` | `.agents/skills/issue-tracker/SKILL.md`, `.agents/skills/acli/SKILL.md` |
320
320
  | GitHub Issues | `issue-tracker` + `gh-cli` | `.agents/skills/issue-tracker/SKILL.md`, `.agents/skills/gh-cli/SKILL.md` |
321
321
  | Linear | `issue-tracker` + `linear-cli` | `.agents/skills/issue-tracker/SKILL.md`, `.agents/skills/linear-cli/SKILL.md` |
322
322
 
@@ -445,7 +445,7 @@ Root Files Updated:
445
445
  - .claude/rules-snippets/*.md (rules content)
446
446
  - .claude/prompt-snippets/*.md (prompt content)
447
447
  - .claude/agents-snippets/*.md (agent content)
448
- - .opencode/opencode.json
448
+ - .opencode/opencode.jsonc
449
449
  - .opencode/commands/*.md
450
450
  - .opencode/rules/*.md
451
451
  - .opencode/agents/*.md
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://opencode.ai/config.json",
3
+ "instructions": [
4
+ "AGENTS.md",
5
+ ".opencode/rules/*.md",
6
+ ".agents/skills/orient-to-recent-work/SKILL.md"
7
+ ],
8
+ "skills": {
9
+ "paths": [
10
+ ".agents/skills/**/*.md",
11
+ ".claude/skills/**/*.md"
12
+ ]
13
+ },
14
+ "plugin": [
15
+ "opencode-mem",
16
+ "@tarquinen/opencode-dcp@latest",
17
+ "@dietrichgebert/ponytail",
18
+ "opentmux"
19
+ ],
20
+ "lsp": true
21
+ }
@@ -4,76 +4,90 @@
4
4
  // intensity, and persists /ponytail mode switches. Reuses the shared instruction
5
5
  // builder so Claude Code, Codex, pi, and OpenCode all read one source of truth.
6
6
  //
7
- // OpenCode loads this as a server plugin — add it to your opencode.json:
7
+ // OpenCode loads this as a server plugin — add it to your opencode.jsonc:
8
8
  // { "plugin": ["./.opencode/plugins/ponytail.mjs"] }
9
9
 
10
- import { createRequire } from 'module';
11
- import fs from 'fs';
12
- import os from 'os';
13
- import path from 'path';
14
- import { fileURLToPath } from 'url';
10
+ import { createRequire } from "module";
11
+ import fs from "fs";
12
+ import os from "os";
13
+ import path from "path";
14
+ import { fileURLToPath } from "url";
15
15
 
16
16
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
17
17
 
18
18
  // The shared instruction builder is CommonJS; bridge to it from this ES module.
19
19
  const require = createRequire(import.meta.url);
20
- const { getPonytailInstructions } = require('../../hooks/ponytail-instructions');
21
- const { getDefaultMode, normalizePersistedMode } = require('../../hooks/ponytail-config');
20
+ const {
21
+ getPonytailInstructions,
22
+ } = require("../../hooks/ponytail-instructions");
23
+ const {
24
+ getDefaultMode,
25
+ normalizePersistedMode,
26
+ } = require("../../hooks/ponytail-config");
22
27
 
23
28
  // OpenCode has no flag-file convention of its own; keep mode beside its config.
24
29
  const statePath = path.join(
25
- process.env.XDG_CONFIG_HOME || path.join(os.homedir(), '.config'),
26
- 'opencode',
27
- '.ponytail-active',
30
+ process.env.XDG_CONFIG_HOME || path.join(os.homedir(), ".config"),
31
+ "opencode",
32
+ ".ponytail-active",
28
33
  );
29
34
 
30
35
  function readMode() {
31
- try {
32
- return normalizePersistedMode(fs.readFileSync(statePath, 'utf8').trim()) || getDefaultMode();
33
- } catch (e) {
34
- return getDefaultMode();
35
- }
36
+ try {
37
+ return (
38
+ normalizePersistedMode(fs.readFileSync(statePath, "utf8").trim()) ||
39
+ getDefaultMode()
40
+ );
41
+ } catch (e) {
42
+ return getDefaultMode();
43
+ }
36
44
  }
37
45
 
38
46
  function writeMode(mode) {
39
- fs.mkdirSync(path.dirname(statePath), { recursive: true });
40
- fs.writeFileSync(statePath, mode);
47
+ fs.mkdirSync(path.dirname(statePath), { recursive: true });
48
+ fs.writeFileSync(statePath, mode);
41
49
  }
42
50
 
43
51
  export default async ({ client } = {}) => {
44
- const log = (level, message) => {
45
- try { client && client.app && client.app.log({ body: { service: 'ponytail', level, message } }); } catch (e) {}
46
- };
52
+ const log = (level, message) => {
53
+ try {
54
+ client &&
55
+ client.app &&
56
+ client.app.log({ body: { service: "ponytail", level, message } });
57
+ } catch (e) {}
58
+ };
47
59
 
48
- const ponytailSkillsDir = path.resolve(__dirname, '../../.agents/skills');
60
+ const ponytailSkillsDir = path.resolve(__dirname, "../../.agents/skills");
49
61
 
50
- return {
51
- // Register skills directory so opencode discovers ponytail skills.
52
- config: async (config) => {
53
- config.skills = config.skills || {};
54
- config.skills.paths = config.skills.paths || [];
55
- if (!config.skills.paths.includes(ponytailSkillsDir)) {
56
- config.skills.paths.push(ponytailSkillsDir);
57
- }
58
- },
62
+ return {
63
+ // Register skills directory so opencode discovers ponytail skills.
64
+ config: async (config) => {
65
+ config.skills = config.skills || {};
66
+ config.skills.paths = config.skills.paths || [];
67
+ if (!config.skills.paths.includes(ponytailSkillsDir)) {
68
+ config.skills.paths.push(ponytailSkillsDir);
69
+ }
70
+ },
59
71
 
60
- // Append the ruleset to the system prompt every turn.
61
- 'experimental.chat.system.transform': async (_input, output) => {
62
- const mode = readMode();
63
- if (mode === 'off') return;
64
- output.system.push(getPonytailInstructions(mode));
65
- },
72
+ // Append the ruleset to the system prompt every turn.
73
+ "experimental.chat.system.transform": async (_input, output) => {
74
+ const mode = readMode();
75
+ if (mode === "off") return;
76
+ output.system.push(getPonytailInstructions(mode));
77
+ },
66
78
 
67
- // Persist `/ponytail <level>` so the next turn's injection follows it.
68
- // ponytail: mode applies from the next message, not the current one — the
69
- // transform reads the flag the command writes. Good enough; switch to a
70
- // synchronous store if same-turn switching ever matters.
71
- 'command.execute.before': async (input) => {
72
- if (!input || input.command !== 'ponytail') return;
73
- // `off` is persisted like any mode; the transform reads it and stays silent.
74
- const mode = normalizePersistedMode((input.arguments || '').trim()) || getDefaultMode();
75
- writeMode(mode);
76
- log('info', 'ponytail ' + mode);
77
- },
78
- };
79
+ // Persist `/ponytail <level>` so the next turn's injection follows it.
80
+ // ponytail: mode applies from the next message, not the current one — the
81
+ // transform reads the flag the command writes. Good enough; switch to a
82
+ // synchronous store if same-turn switching ever matters.
83
+ "command.execute.before": async (input) => {
84
+ if (!input || input.command !== "ponytail") return;
85
+ // `off` is persisted like any mode; the transform reads it and stays silent.
86
+ const mode =
87
+ normalizePersistedMode((input.arguments || "").trim()) ||
88
+ getDefaultMode();
89
+ writeMode(mode);
90
+ log("info", "ponytail " + mode);
91
+ },
92
+ };
79
93
  };
@@ -122,40 +122,40 @@ Detailed standards are split into focused instruction files in `.github/instruct
122
122
 
123
123
  For detailed standards on specific topics, refer to these skills in `.agents/skills/`:
124
124
 
125
- | Skill | File | Purpose |
126
- | --------------------------------- | --------------------------------------------- | ---------------------------------------------------- |
127
- | **Atlassian CLI** | `acli/SKILL.md` | Atlassian CLI (ACLI) command reference |
128
- | **Bitbucket CLI** | `bkt-cli/SKILL.md` | Bitbucket PRs, issues, repos CLI reference |
129
- | **Brainstorming** | `brainstorming/SKILL.md` | Structured ideation sessions |
130
- | **Code Simplifier** | `code-simplifier/SKILL.md` | Simplifies code for clarity without behavior changes |
131
- | **Code Review** | `requesting-code-review/SKILL.md` | Review process and checklists |
132
- | **Debugger** | `debugger/SKILL.md` | Structured debugging dispatch with root cause focus |
133
- | **Debugging** | `systematic-debugging/SKILL.md` | Debugging workflows |
134
- | **Documentation** | `project-documentation/SKILL.md` | README, comments, ADRs, changelogs |
135
- | **Executing Plans** | `executing-plans/SKILL.md` | Following through on implementation plans |
136
- | **Finishing Branches** | `finishing-a-development-branch/SKILL.md` | Completing and merging branches |
137
- | **GitHub CLI** | `gh-cli/SKILL.md` | GitHub Issues CLI command reference |
138
- | **GitLab CLI** | `glab-cli/SKILL.md` | GitLab MRs, issues, pipelines CLI reference |
139
- | **Git Worktrees** | `using-git-worktrees/SKILL.md` | Parallel development branches |
140
- | **Issue Tracker** | `issue-tracker/SKILL.md` | MCP tools, CLI fallback, epic discovery |
141
- | **Linear CLI** | `linear-cli/SKILL.md` | Linear CLI command reference |
142
- | **Logging** | `logging/SKILL.md` | Structured logging standards, log levels |
143
- | **Orient to Recent Work** | `orient-to-recent-work/SKILL.md` | Build context from recent project activity |
144
- | **Parallel Agents** | `dispatching-parallel-agents/SKILL.md` | Coordinating multiple AI agents |
145
- | **Ponytail** | `ponytail/SKILL.md` | YAGNI/stdlib/native/minimum-discipline coding mode |
146
- | **Ponytail Audit** | `ponytail-audit/SKILL.md` | Whole-repo audit for over-engineering |
147
- | **Ponytail Debt** | `ponytail-debt/SKILL.md` | Track ponytail shortcuts and deferrals |
148
- | **Ponytail Gain** | `ponytail-gain/SKILL.md` | Show ponytail's measured impact |
149
- | **Ponytail Help** | `ponytail-help/SKILL.md` | Quick-reference for ponytail modes and commands |
150
- | **Ponytail Review** | `ponytail-review/SKILL.md` | Code review focused on over-engineering |
151
- | **Receiving Reviews** | `receiving-code-review/SKILL.md` | Respond constructively to review feedback |
152
- | **Security Review** | `security-reviewer/SKILL.md` | Security-focused code review |
153
- | **Subagent Development** | `subagent-driven-development/SKILL.md` | Breaking tasks into subagent chunks |
154
- | **Superpowers** | `using-superpowers/SKILL.md` | Leveraging the full skill system |
155
- | **TDD** | `test-driven-development/SKILL.md` | Test-driven development |
156
- | **Verification** | `verification-before-completion/SKILL.md` | Quality checks before claiming work done |
157
- | **Writing Plans** | `writing-plans/SKILL.md` | Creating implementation plans |
158
- | **Writing Skills** | `writing-skills/SKILL.md` | Creating effective SKILL.md files |
125
+ | Skill | File | Purpose |
126
+ | ------------------------- | ----------------------------------------- | ---------------------------------------------------- |
127
+ | **Atlassian CLI** | `acli/SKILL.md` | Atlassian CLI (ACLI) command reference |
128
+ | **Bitbucket CLI** | `bkt-cli/SKILL.md` | Bitbucket PRs, issues, repos CLI reference |
129
+ | **Brainstorming** | `brainstorming/SKILL.md` | Structured ideation sessions |
130
+ | **Code Simplifier** | `code-simplifier/SKILL.md` | Simplifies code for clarity without behavior changes |
131
+ | **Code Review** | `requesting-code-review/SKILL.md` | Review process and checklists |
132
+ | **Debugger** | `debugger/SKILL.md` | Structured debugging dispatch with root cause focus |
133
+ | **Debugging** | `systematic-debugging/SKILL.md` | Debugging workflows |
134
+ | **Documentation** | `project-documentation/SKILL.md` | README, comments, ADRs, changelogs |
135
+ | **Executing Plans** | `executing-plans/SKILL.md` | Following through on implementation plans |
136
+ | **Finishing Branches** | `finishing-a-development-branch/SKILL.md` | Completing and merging branches |
137
+ | **GitHub CLI** | `gh-cli/SKILL.md` | GitHub Issues CLI command reference |
138
+ | **GitLab CLI** | `glab-cli/SKILL.md` | GitLab MRs, issues, pipelines CLI reference |
139
+ | **Git Worktrees** | `using-git-worktrees/SKILL.md` | Parallel development branches |
140
+ | **Issue Tracker** | `issue-tracker/SKILL.md` | MCP tools, CLI fallback, epic discovery |
141
+ | **Linear CLI** | `linear-cli/SKILL.md` | Linear CLI command reference |
142
+ | **Logging** | `logging/SKILL.md` | Structured logging standards, log levels |
143
+ | **Orient to Recent Work** | `orient-to-recent-work/SKILL.md` | Build context from recent project activity |
144
+ | **Parallel Agents** | `dispatching-parallel-agents/SKILL.md` | Coordinating multiple AI agents |
145
+ | **Ponytail** | `ponytail/SKILL.md` | YAGNI/stdlib/native/minimum-discipline coding mode |
146
+ | **Ponytail Audit** | `ponytail-audit/SKILL.md` | Whole-repo audit for over-engineering |
147
+ | **Ponytail Debt** | `ponytail-debt/SKILL.md` | Track ponytail shortcuts and deferrals |
148
+ | **Ponytail Gain** | `ponytail-gain/SKILL.md` | Show ponytail's measured impact |
149
+ | **Ponytail Help** | `ponytail-help/SKILL.md` | Quick-reference for ponytail modes and commands |
150
+ | **Ponytail Review** | `ponytail-review/SKILL.md` | Code review focused on over-engineering |
151
+ | **Receiving Reviews** | `receiving-code-review/SKILL.md` | Respond constructively to review feedback |
152
+ | **Security Review** | `security-reviewer/SKILL.md` | Security-focused code review |
153
+ | **Subagent Development** | `subagent-driven-development/SKILL.md` | Breaking tasks into subagent chunks |
154
+ | **Superpowers** | `using-superpowers/SKILL.md` | Leveraging the full skill system |
155
+ | **TDD** | `test-driven-development/SKILL.md` | Test-driven development |
156
+ | **Verification** | `verification-before-completion/SKILL.md` | Quality checks before claiming work done |
157
+ | **Writing Plans** | `writing-plans/SKILL.md` | Creating implementation plans |
158
+ | **Writing Skills** | `writing-skills/SKILL.md` | Creating effective SKILL.md files |
159
159
 
160
160
  ## ⚠️ CRITICAL: Orchestration Checkpoint (READ FIRST)
161
161
 
@@ -364,4 +364,4 @@ Documentation updates are **mandatory before committing** any feature or fix. Se
364
364
  - [.opencode/rules/](.opencode/rules/) - OpenCode rules (thin wrappers → rules-snippets)
365
365
  - [.opencode/commands/](.opencode/commands/) - OpenCode commands (thin wrappers → prompt-snippets)
366
366
  - [.opencode/agents/](.opencode/agents/) - OpenCode agents (thin wrappers → agents-snippets)
367
- - [.opencode/opencode.json](.opencode/opencode.json) - OpenCode configuration
367
+ - [.opencode/opencode.jsonc](.opencode/opencode.jsonc) - OpenCode configuration
@@ -55,7 +55,7 @@
55
55
 
56
56
  ## OpenCode
57
57
 
58
- - Config is in `.opencode/opencode.json`.
58
+ - Config is in `.opencode/opencode.jsonc`.
59
59
  - Commands are in `.opencode/commands/`.
60
60
  - Rules are in `.opencode/rules/`.
61
61
  - Agents are in `.opencode/agents/`.