@synoikia/create-plugin 0.7.0 → 0.8.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 (71) hide show
  1. package/README.md +2 -13
  2. package/dist/cli.js +0 -4
  3. package/dist/cli.js.map +1 -1
  4. package/dist/scaffold.js +1 -6
  5. package/dist/scaffold.js.map +1 -1
  6. package/package.json +3 -3
  7. package/templates/repo/base/_github/workflows/ci.yml +12 -0
  8. package/templates/repo/base/_gitignore +1 -0
  9. package/templates/repo/base/package.json +2 -28
  10. package/templates/repo/claude/CLAUDE.md +2 -38
  11. package/templates/repo/claude/_claude/guard-paths.json +17 -0
  12. package/templates/repo/claude/_claude/hooks/check-plugins.mjs +39 -0
  13. package/templates/repo/claude/_claude/hooks/session-start.sh +8 -9
  14. package/templates/repo/claude/_claude/settings.json +17 -17
  15. package/dist/workflow/branch.d.ts +0 -2
  16. package/dist/workflow/branch.js +0 -31
  17. package/dist/workflow/branch.js.map +0 -1
  18. package/dist/workflow/config.d.ts +0 -24
  19. package/dist/workflow/config.js +0 -25
  20. package/dist/workflow/config.js.map +0 -1
  21. package/dist/workflow/features.d.ts +0 -20
  22. package/dist/workflow/features.js +0 -165
  23. package/dist/workflow/features.js.map +0 -1
  24. package/dist/workflow/git.d.ts +0 -12
  25. package/dist/workflow/git.js +0 -42
  26. package/dist/workflow/git.js.map +0 -1
  27. package/dist/workflow/glob.d.ts +0 -3
  28. package/dist/workflow/glob.js +0 -21
  29. package/dist/workflow/glob.js.map +0 -1
  30. package/dist/workflow/index.d.ts +0 -2
  31. package/dist/workflow/index.js +0 -162
  32. package/dist/workflow/index.js.map +0 -1
  33. package/dist/workflow/phases.d.ts +0 -22
  34. package/dist/workflow/phases.js +0 -50
  35. package/dist/workflow/phases.js.map +0 -1
  36. package/dist/workflow/prose.d.ts +0 -2
  37. package/dist/workflow/prose.js +0 -113
  38. package/dist/workflow/prose.js.map +0 -1
  39. package/dist/workflow/red.d.ts +0 -2
  40. package/dist/workflow/red.js +0 -36
  41. package/dist/workflow/red.js.map +0 -1
  42. package/dist/workflow/secrets.d.ts +0 -2
  43. package/dist/workflow/secrets.js +0 -5
  44. package/dist/workflow/secrets.js.map +0 -1
  45. package/dist/workflow/security-line.d.ts +0 -6
  46. package/dist/workflow/security-line.js +0 -14
  47. package/dist/workflow/security-line.js.map +0 -1
  48. package/dist/workflow/sync.d.ts +0 -4
  49. package/dist/workflow/sync.js +0 -47
  50. package/dist/workflow/sync.js.map +0 -1
  51. package/dist/workflow/tests.d.ts +0 -2
  52. package/dist/workflow/tests.js +0 -6
  53. package/dist/workflow/tests.js.map +0 -1
  54. package/templates/repo/claude/_claude/agents/security-reviewer.md +0 -70
  55. package/templates/repo/claude/_claude/hooks/format.mjs +0 -20
  56. package/templates/repo/claude/_claude/hooks/guard-paths.mjs +0 -43
  57. package/templates/repo/claude/_claude/skills/add-plugin/SKILL.md +0 -46
  58. package/templates/repo/claude/_claude/skills/plugin-development/SKILL.md +0 -64
  59. package/templates/repo/claude/_claude/skills/plugin-development/references/testing.md +0 -60
  60. package/templates/repo/claude/_claude/skills/plugin-development/references/typescript.md +0 -31
  61. package/templates/repo/claude/_claude/skills/release-plugin/SKILL.md +0 -42
  62. package/templates/workflow/base/_githooks/pre-commit +0 -3
  63. package/templates/workflow/base/_githooks/pre-push +0 -4
  64. package/templates/workflow/base/_github/workflows/workflow.yml +0 -45
  65. package/templates/workflow/base/docs/workflow.md +0 -100
  66. package/templates/workflow/claude/_claude/hooks/guard-branch.mjs +0 -73
  67. package/templates/workflow/claude/_claude/skills/architect/SKILL.md +0 -44
  68. package/templates/workflow/claude/_claude/skills/change-workflow/SKILL.md +0 -70
  69. package/templates/workflow/claude/_claude/skills/developer/SKILL.md +0 -57
  70. package/templates/workflow/claude/_claude/skills/requirements-engineer/SKILL.md +0 -59
  71. package/templates/workflow/claude/_claude/skills/technical-writing/SKILL.md +0 -35
package/README.md CHANGED
@@ -14,21 +14,10 @@ Inside a plugin repository (a root devDependency; `pnpm new` maps to `synoikia-p
14
14
  | `synoikia-plugin build [dir]` | Bundle a plugin into `dist/index.js`, `plugin.yaml` validated and inlined |
15
15
  | `synoikia-plugin check [dir…]` | Manifest, `plugin.yaml` and version checks |
16
16
  | `synoikia-plugin repo pack\|index\|verify\|publish` | The signed plugin repository steps a release workflow runs |
17
- | `synoikia-plugin workflow <command>` | The spec- and test-first checks, git hooks and shared files (below) |
18
17
 
19
- ## Workflow
18
+ ## Claude Code
20
19
 
21
- Every new repository gets the spec- and test-first workflow. `docs/workflow.md` holds the rules. The git hooks and `.github/workflows/workflow.yml` run the checks. The `--claude` option adds the workflow skills and a branch-name hook. `pnpm workflow sync` brings a repository's copies up to date with this package. `synoikia.workflow` in the root `package.json` sets the paths the checks use.
22
-
23
- | Command | What |
24
- | ------------------------------------------- | ---------------------------------------------------------------------- |
25
- | `workflow check-branch [name]` | `<component>/<two to four words>` |
26
- | `workflow check-phases --base <ref>` | One phase per commit. `--red-green` runs the scenarios at `test:` |
27
- | `workflow check-features [--base <ref>]` | Feature file rules. With `--base`: the slice size and new test files |
28
- | `workflow check-prose [--base <ref>]` | The writing rules on added lines, files or the PR description |
29
- | `workflow check-security-line --base <ref>` | A `Security audit:` line when a ready PR changes a security path |
30
- | `workflow pre-commit`, `workflow pre-push` | What the git hooks run |
31
- | `workflow hooks install`, `workflow sync` | Use `.githooks` in this clone. Write or check (`--check`) shared files |
20
+ The `--claude` option adds a `CLAUDE.md` and Claude Code settings that enable the `synoikia-plugin-dev` plugin of the [Synoikia dev kit](https://github.com/synoikia-org/synoikia-dev-kit). A session start hook recommends the plugin when it is not loaded. A new repository has no workflow files, so nothing checks commit phases or a `Security audit:` line. To build spec first and test first, adopt [NoVibe](https://github.com/novibe-org/novibe). Its CI scans each pull request for secrets with gitleaks.
32
21
 
33
22
  `@synoikia/create-plugin/vitest` exports `pluginFiles()`, the Vitest plugin that loads `.yaml` and `.md` imports as the bundle does.
34
23
 
package/dist/cli.js CHANGED
@@ -8,7 +8,6 @@ import { askPluginOptions, PLUGIN_FLAGS, prompts } from './prompts.js';
8
8
  import { createRepoTool } from './repo.js';
9
9
  import { findRepoRoot } from './repo-root.js';
10
10
  import { install, newPlugin } from './scaffold.js';
11
- import { runWorkflow } from './workflow/index.js';
12
11
  const USAGE = `synoikia-plugin <command>
13
12
 
14
13
  new Add a plugin to this repository (asks for what flags don't give)
@@ -22,7 +21,6 @@ const USAGE = `synoikia-plugin <command>
22
21
  repo pack|index|verify|publish
23
22
  Build the signed plugin repository (release workflow steps)
24
23
  --repository owner/name --out .repo --current .repo-current/index.json
25
- workflow <command> Spec- and test-first checks, git hooks and shared files (synoikia-plugin workflow help)
26
24
  `;
27
25
  async function main(argv) {
28
26
  const [command, ...rest] = argv;
@@ -94,8 +92,6 @@ async function main(argv) {
94
92
  }
95
93
  return 0;
96
94
  }
97
- case 'workflow':
98
- return runWorkflow(rest, findRepoRoot());
99
95
  default:
100
96
  console.error(USAGE);
101
97
  return command === undefined || command === '--help' || command === 'help' ? 0 : 2;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/scaffold.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { execFileSync } from 'node:child_process';
2
- import { chmodSync, existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from 'node:fs';
2
+ import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from 'node:fs';
3
3
  import path from 'node:path';
4
4
  import { RESERVED_NAMESPACES, SDK_VERSION } from '@synoikia/plugin-sdk';
5
5
  import { dependencyRange, TEMPLATES_DIR } from './repo-root.js';
@@ -291,11 +291,6 @@ export function createRepo(opts) {
291
291
  renderTemplate(path.join(TEMPLATES_DIR, 'repo', 'release'), dir, vars, written);
292
292
  if (opts.claude)
293
293
  renderTemplate(path.join(TEMPLATES_DIR, 'repo', 'claude'), dir, vars, written);
294
- renderTemplate(path.join(TEMPLATES_DIR, 'workflow', 'base'), dir, {}, written);
295
- if (opts.claude)
296
- renderTemplate(path.join(TEMPLATES_DIR, 'workflow', 'claude'), dir, {}, written);
297
- for (const hook of ['pre-commit', 'pre-push'])
298
- chmodSync(path.join(dir, '.githooks', hook), 0o755);
299
294
  mkdirSync(path.join(dir, 'plugins'), { recursive: true });
300
295
  return written;
301
296
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synoikia/create-plugin",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Create Synoikia plugin repositories and plugins, then build, check and publish them",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,7 +38,7 @@
38
38
  "@synoikia/plugin-sdk": "^0.6.0"
39
39
  },
40
40
  "peerDependencies": {
41
- "@synoikia/core": "^0.17.2"
41
+ "@synoikia/core": "^0.17.3"
42
42
  },
43
43
  "peerDependenciesMeta": {
44
44
  "@synoikia/core": {
@@ -49,7 +49,7 @@
49
49
  "@types/ws": "^8.18.1",
50
50
  "quickpickle": "1.11.2",
51
51
  "ws": "^8.22.0",
52
- "@synoikia/core": "^0.17.2"
52
+ "@synoikia/core": "^0.17.3"
53
53
  },
54
54
  "scripts": {
55
55
  "build": "tsc -p tsconfig.build.json",
@@ -24,3 +24,15 @@ jobs:
24
24
  - run: pnpm typecheck
25
25
  # Each plugin's test: check, build, unit tests, then core's compliance suite and its features on the bundle.
26
26
  - run: pnpm test
27
+
28
+ gitleaks:
29
+ runs-on: ubuntu-latest
30
+ steps:
31
+ - uses: actions/checkout@v4
32
+ with:
33
+ fetch-depth: 0
34
+ persist-credentials: false
35
+ - uses: gitleaks/gitleaks-action@ff98106e4c7b2bc287b24eaf42907196329070c7 # v2.3.9
36
+ env:
37
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
38
+ GITLEAKS_ENABLE_COMMENTS: false
@@ -4,3 +4,4 @@ coverage/
4
4
  *.tsbuildinfo
5
5
  .repo/
6
6
  .repo-current/
7
+ .env*
@@ -14,37 +14,11 @@
14
14
  "test": "pnpm -r --filter './plugins/*' test",
15
15
  "lint": "eslint .",
16
16
  "format": "prettier --write .",
17
- "format:check": "prettier --check .",
18
- "workflow": "synoikia-plugin workflow",
19
- "hooks:install": "synoikia-plugin workflow hooks install"
17
+ "format:check": "prettier --check ."
20
18
  },
21
19
  "synoikia": {
22
20
  "repository": "{{repository}}",
23
- "name": "{{repoName}}",
24
- "workflow": {
25
- "securityPaths": [
26
- "plugins/*/manifest.json",
27
- "plugins/*/plugin.yaml",
28
- "plugins/*/src/**",
29
- "plugins/*/test/compliance.yaml",
30
- "plugins/*/test/fake*.ts",
31
- "plugins/*/test/fixtures/**",
32
- "plugins/*/features/**",
33
- "plugins/*/vitest.config.ts",
34
- "plugins/*/instructions.md",
35
- "plugins/*/guides/**",
36
- "vitest.shared.ts",
37
- "**/package.json",
38
- ".github/workflows/**",
39
- ".gitleaks.toml",
40
- ".claude/agents/**",
41
- ".claude/hooks/**",
42
- ".claude/settings.json",
43
- "minisign.pub",
44
- "pnpm-workspace.yaml",
45
- "pnpm-lock.yaml"
46
- ]
47
- }
21
+ "name": "{{repoName}}"
48
22
  },
49
23
  "devDependencies": {
50
24
  "@eslint/js": "^10.0.1",
@@ -2,11 +2,7 @@
2
2
 
3
3
  Plugins for [Synoikia](https://github.com/via-justa/synoikia-core). Authoring guide: `https://github.com/via-justa/synoikia-core/blob/main/docs/plugin-authoring.md`.
4
4
 
5
- **A plugin only describes its upstream API. Core decides what is allowed.** Core's sandbox, permission gate, approvals, redaction and audit apply to every plugin. A plugin supplies the catalog, the classification (read, write, locked), targets, summaries, confirmation literals and `sensitiveKeys`. It never adds its own allow/deny switch, approval prompt or secret handling. If a plugin needs something core doesn't offer, that is a change in Synoikia core, released first.
6
-
7
- Every task that changes the repo starts with the `change-workflow` skill (`.claude/skills/change-workflow/`). Changes are built spec first and test first, one slice for each pull request. The `requirements-engineer`, `architect` and `developer` skills run the steps, and prose follows the `technical-writing` skill. The rules for commits, branches, feature files, tests and prose are in `docs/workflow.md`. The git hooks (`pnpm hooks:install`, once per clone) and the `Workflow` CI job check them.
8
-
9
- Plugin code, `plugin.yaml`, manifest and test work follows the `plugin-development` skill (`.claude/skills/plugin-development/`). Its rules: policy in YAML, SDK helpers before new code, fail closed, and `test/compliance.yaml` diffs reviewed as security changes. Load it before writing or reviewing a plugin change.
5
+ The Synoikia skills, rules and hooks for this repository come from the `synoikia-plugin-dev` plugin of the [Synoikia dev kit](https://github.com/synoikia-org/synoikia-dev-kit). `.claude/settings.json` enables it, and a session start hook says when it is not loaded. `.claude/guard-paths.json` lists the files that the path guard protects.
10
6
 
11
7
  ## Layout
12
8
 
@@ -26,42 +22,10 @@ Plugin code, `plugin.yaml`, manifest and test work follows the `plugin-developme
26
22
  Node 22.12+ (`.nvmrc` pins 22), pnpm 10.
27
23
 
28
24
  ```sh
29
- pnpm new # add a plugin (see the add-plugin skill)
25
+ pnpm new # add a plugin
30
26
  pnpm lint && pnpm format:check && pnpm typecheck && pnpm test # what CI runs
31
27
  pnpm --filter ./plugins/<id> test # one plugin: check, build, unit tests, compliance suite, features
32
28
  pnpm check # manifests, plugin.yaml and versions
33
29
  pnpm --filter ./plugins/<id> exec vitest run test/unit/<file>.test.ts # one unit test file
34
30
  pnpm format # fix formatting
35
- pnpm hooks:install # once per clone: the workflow git hooks
36
- pnpm workflow pre-push # the workflow checks (branch, phases, features, prose)
37
31
  ```
38
-
39
- Each plugin's `vitest.config.ts` uses `complianceConfig` from `@synoikia/core/testing/compliance`. Core's compliance suite and the plugin's features run the **built** `dist/index.js` on the real core. The bundle runs as a permission-confined child against the fake upstream. A stale bundle gives stale results, so rebuild after you change `src/` or `plugin.yaml`. The `test` script does this (`synoikia-plugin build` validates and inlines `plugin.yaml`).
40
-
41
- A plugin is ready when its `test` run ends with "<Name> <version> is fit for production." and no test fails. A failing own feature does not change that verdict line, but it fails the run. The suite and its steps are in core's `docs/plugin-authoring.md` › The compliance suite.
42
-
43
- **Policy data goes in `plugin.yaml`, logic in `src/`.** Locks, splits, sensitive params and results, confirmation literals, guidance and upstream-specific lists are YAML that the SDK's `compileRules` applies. Only decisions that need code stay in TypeScript.
44
-
45
- **`test/compliance.yaml` is policy too.** It gives the reads, writes, rejects, a lock case for each locked operation, the secrets and the connection test. A change to it is a security change, so review its diff like a `plugin.yaml` diff.
46
-
47
- ## Rules that break releases or installs
48
-
49
- - **Self-contained bundle.** Under the Node permission model the plugin can read nothing outside its own package directory. So every runtime dependency and data file must be bundled into `dist/index.js`. `synoikia-plugin build` does it.
50
- - **Network hosts.** `manifest.json` `network.hosts` lists every host the plugin connects to. A new upstream URL, such as a spec mirror, goes there too. Admins review it before enabling the plugin, and an update that changes it installs disabled. Core doesn't enforce it (the plugin process can reach any host), so it must be accurate.
51
- - **Secrets.** Every credential field is `writeOnly: true` in the connection schema, uses the `secret` widget, and is listed in `sensitiveKeys`. So is any secret field the upstream returns. `synoikia-plugin check`, run by each plugin's `test` script, checks the connection schema. A `secrets` case in `test/compliance.yaml` checks each secret the upstream returns.
52
- - **Versions.** `version` in `manifest.json` and `package.json` must match. A version that is released can never change, so any change to a released plugin needs a new version. Bump only when asked. The `release-plugin` skill covers it.
53
- - **SDK and core ranges.** Plugins depend on published `@synoikia/plugin-sdk`, `@synoikia/core` and `@synoikia/create-plugin` from npm. To update, bump the ranges and run `pnpm install`.
54
-
55
- ## Conventions
56
-
57
- Strict TypeScript with `noUncheckedIndexedAccess` and `verbatimModuleSyntax`: use `import type`, and `.js` extensions on relative imports. Unused variables are allowed only with a `_` prefix. Keep comments minimal: one or two lines, only for what the code can't say (a reason, a constraint, a design § reference). Do not write multi-line comment blocks in code, YAML or workflows. Prettier formats everything, and a hook runs it after each edit. Behavior that crosses the plugin boundary goes in `features/<id>.feature` or `test/compliance.yaml`, with the fake upstream extended to match. Pure logic gets a unit test in `test/unit/`.
58
-
59
- ## Security review
60
-
61
- Before you open a PR that touches a security path, run the `security-reviewer` subagent (`.claude/agents/security-reviewer.md`) on the diff. Address its findings. The security paths include a plugin's `manifest.json`, `plugin.yaml`, `src/`, dependencies and `test/compliance.yaml`, and `.github/workflows/`. The full list is in `synoikia.workflow.securityPaths` in the root `package.json`.
62
-
63
- The reviewer checks classification, request building, approval summaries, secrets, network hosts and the release flow. It also runs `pnpm audit` and triages known CVEs by whether the dependency is bundled into a plugin. Put its `Security audit:` line in the PR description. The `Workflow` CI job checks for it.
64
-
65
- ## Protected files
66
-
67
- A PreToolUse hook (`.claude/hooks/guard-paths.mjs`) denies edits to `pnpm-lock.yaml` and `plugins/*/dist/`, and asks first for `minisign.pub`. Never touch the `MINISIGN_SECRET_KEY` flow in `.github/workflows/release.yml` unless asked.
@@ -0,0 +1,17 @@
1
+ [
2
+ {
3
+ "match": "(^|/)pnpm-lock\\.yaml$",
4
+ "decision": "deny",
5
+ "reason": "pnpm-lock.yaml is generated. Change package.json and run `pnpm install` instead."
6
+ },
7
+ {
8
+ "match": "^plugins/[^/]+/dist/",
9
+ "decision": "deny",
10
+ "reason": "dist/ is the esbuild bundle. Edit src/ and run `pnpm --filter ./plugins/<id> build`."
11
+ },
12
+ {
13
+ "match": "^minisign\\.pub$",
14
+ "decision": "ask",
15
+ "reason": "minisign.pub is the key every Synoikia install pins for this repository. Changing it blocks installs until each admin confirms the new key; only for a compromised key."
16
+ }
17
+ ]
@@ -0,0 +1,39 @@
1
+ // SessionStart hook: tells the user and the assistant when the plugins this repository uses are not loaded.
2
+ // Usage: check-plugins.mjs required|recommended <plugin>... Prints the hook's JSON, nothing when all are loaded.
3
+ import { spawnSync } from 'node:child_process';
4
+
5
+ const [level, ...wanted] = process.argv.slice(2);
6
+ const list = spawnSync(process.env.CLAUDE_CODE_EXECPATH || 'claude', ['plugin', 'list', '--json'], {
7
+ encoding: 'utf8',
8
+ timeout: 20_000,
9
+ });
10
+ let loaded = new Set();
11
+ try {
12
+ loaded = new Set(
13
+ JSON.parse(list.stdout)
14
+ .filter((p) => p.enabled)
15
+ .map((p) => String(p.id).split('@')[0]),
16
+ );
17
+ } catch {
18
+ // An unreadable list counts as no plugin loaded, so a missing plugin is never missed.
19
+ }
20
+ const missing = wanted.filter((name) => !loaded.has(name));
21
+ if (!missing.length) process.exit(0);
22
+
23
+ const names = missing.map((n) => `\`${n}\``).join(', ');
24
+ const how =
25
+ 'See https://github.com/synoikia-org/synoikia-dev-kit#use-the-plugins. In a cloud session, add the plugins to your claude.ai account.';
26
+ const message =
27
+ level === 'required'
28
+ ? `This repository needs the plugins ${names}, and they are not loaded. ${how}`
29
+ : `The plugins ${names} are recommended for this repository, and they are not loaded. ${how}`;
30
+ const context =
31
+ level === 'required'
32
+ ? `${message} Without them this session has none of the repository's workflow skills, rules or hooks. Do not change files in this repository. Tell the user how to install the plugins, then stop.`
33
+ : `${message} Without them this session has none of the workflow skills, rules or hooks. Tell the user once at the start, then continue.`;
34
+ console.log(
35
+ JSON.stringify({
36
+ systemMessage: message,
37
+ hookSpecificOutput: { hookEventName: 'SessionStart', additionalContext: context },
38
+ }),
39
+ );
@@ -1,13 +1,12 @@
1
1
  #!/bin/bash
2
- # SessionStart hook: installs workspace dependencies in Claude Code cloud sessions, so lint, typecheck
3
- # and tests work straight away. Local sessions are left alone.
2
+ # SessionStart hook: checks that the Synoikia dev kit plugins are loaded. In Claude Code cloud sessions it
3
+ # also installs workspace dependencies, so lint, typecheck and tests work straight away.
4
4
  set -euo pipefail
5
5
 
6
- if [ "${CLAUDE_CODE_REMOTE:-}" != "true" ]; then
7
- exit 0
8
- fi
9
-
10
6
  cd "$CLAUDE_PROJECT_DIR"
11
- command -v pnpm >/dev/null 2>&1 || corepack enable
12
- # stdout becomes session context; keep the install log out of it.
13
- pnpm install --frozen-lockfile >&2
7
+ if [ "${CLAUDE_CODE_REMOTE:-}" = "true" ]; then
8
+ command -v pnpm >/dev/null 2>&1 || corepack enable
9
+ # stdout becomes session context; keep the install log out of it.
10
+ pnpm install --frozen-lockfile >&2
11
+ fi
12
+ node .claude/hooks/check-plugins.mjs recommended synoikia-plugin-dev
@@ -1,24 +1,24 @@
1
1
  {
2
+ "extraKnownMarketplaces": {
3
+ "synoikia-dev-kit": {
4
+ "source": {
5
+ "source": "github",
6
+ "repo": "synoikia-org/synoikia-dev-kit"
7
+ }
8
+ }
9
+ },
10
+ "enabledPlugins": {
11
+ "synoikia-plugin-dev@synoikia-dev-kit": true
12
+ },
2
13
  "hooks": {
3
14
  "SessionStart": [
4
15
  {
5
- "hooks": [{ "type": "command", "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/session-start.sh" }]
6
- }
7
- ],
8
- "PreToolUse": [
9
- {
10
- "matcher": "Bash",
11
- "hooks": [{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/guard-branch.mjs" }]
12
- },
13
- {
14
- "matcher": "Edit|Write|MultiEdit|NotebookEdit",
15
- "hooks": [{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/guard-paths.mjs" }]
16
- }
17
- ],
18
- "PostToolUse": [
19
- {
20
- "matcher": "Edit|Write|MultiEdit",
21
- "hooks": [{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/format.mjs" }]
16
+ "hooks": [
17
+ {
18
+ "type": "command",
19
+ "command": "bash \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/session-start.sh"
20
+ }
21
+ ]
22
22
  }
23
23
  ]
24
24
  }
@@ -1,2 +0,0 @@
1
- /** Problems with a branch name: `<component>/<two to four kebab-case words>`. */
2
- export declare function checkBranch(name: string, components: readonly string[], ignore?: readonly string[]): string[];
@@ -1,31 +0,0 @@
1
- import { matchesAny } from './glob.js';
2
- const KEBAB = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
3
- const DATE = /(?:^|-)(?:\d{8}|\d{4}-\d{2}(?:-\d{2})?)(?:-|$)/;
4
- /** A generated token: letters and two or more digits, like `abei82` or `a1b2c3d`. */
5
- const GENERATED = /^(?=(?:[a-z]*\d){2})(?=.*[a-z])[a-z0-9]{5,}$/;
6
- /** Problems with a branch name: `<component>/<two to four kebab-case words>`. */
7
- export function checkBranch(name, components, ignore = []) {
8
- if (matchesAny(name, ignore))
9
- return [];
10
- const parts = name.split('/');
11
- if (parts.length !== 2)
12
- return [`"${name}" is not <component>/<summary>`];
13
- const [component, summary] = parts;
14
- const issues = [];
15
- if (!components.includes(component))
16
- issues.push(`"${component}" is not a component. Use one of: ${components.join(', ')}`);
17
- if (!KEBAB.test(summary))
18
- issues.push(`"${summary}" is not lowercase kebab-case`);
19
- else {
20
- const words = summary.split('-');
21
- if (words.length < 2 || words.length > 4)
22
- issues.push(`"${summary}" has ${words.length} word${words.length === 1 ? '' : 's'}. Use two to four`);
23
- if (DATE.test(summary))
24
- issues.push(`"${summary}" contains a date`);
25
- const generated = words.filter((w) => GENERATED.test(w));
26
- if (generated.length)
27
- issues.push(`"${generated.join('", "')}" looks generated. Say what changes`);
28
- }
29
- return issues;
30
- }
31
- //# sourceMappingURL=branch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"branch.js","sourceRoot":"","sources":["../../src/workflow/branch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,KAAK,GAAG,4BAA4B,CAAC;AAC3C,MAAM,IAAI,GAAG,gDAAgD,CAAC;AAC9D,qFAAqF;AACrF,MAAM,SAAS,GAAG,8CAA8C,CAAC;AAEjE,iFAAiF;AACjF,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,UAA6B,EAAE,SAA4B,EAAE;IACrG,IAAI,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,IAAI,IAAI,gCAAgC,CAAC,CAAC;IAC1E,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,KAAyB,CAAC;IACvD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,qCAAqC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,IAAI,OAAO,+BAA+B,CAAC,CAAC;SAC7E,CAAC;QACJ,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,IAAI,OAAO,SAAS,KAAK,CAAC,MAAM,QAAQ,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC;QACxG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,OAAO,mBAAmB,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,IAAI,SAAS,CAAC,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC;IACrG,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,24 +0,0 @@
1
- /** `synoikia.workflow` in the root package.json; every key is optional. */
2
- export interface WorkflowConfig {
3
- /** First segment of a branch name. Default: the directories under packages/ and plugins/, plus SHARED_COMPONENTS. */
4
- components: string[];
5
- /** Branches no name rule applies to. */
6
- ignoreBranches: string[];
7
- /** Feature files. */
8
- features: string[];
9
- /** Step definitions and the World: what a `test:` commit adds. */
10
- steps: string[];
11
- /** The architecture model: what an `arch:` commit changes. */
12
- architecture: string[];
13
- /** Test files that may be added: pure-function unit tests only. */
14
- unitTests: string[];
15
- /** Product code: a PR that changes it must show its scenarios red before green. */
16
- source: string[];
17
- /** Paths whose change needs a `Security audit:` line in the PR description. */
18
- securityPaths: string[];
19
- /** Prose the writing rules apply to. */
20
- prose: string[];
21
- }
22
- export declare const SHARED_COMPONENTS: string[];
23
- export declare const DEFAULTS: Omit<WorkflowConfig, 'components'>;
24
- export declare function loadConfig(root: string): WorkflowConfig;
@@ -1,25 +0,0 @@
1
- import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
2
- import path from 'node:path';
3
- export const SHARED_COMPONENTS = ['ci', 'docs', 'skills', 'deps'];
4
- export const DEFAULTS = {
5
- ignoreBranches: ['main', 'dependabot/**', 'renovate/**', 'gh-readonly-queue/**'],
6
- features: ['**/features/**/*.feature'],
7
- steps: ['**/features/**/*.ts', '**/features/**/*.js'],
8
- architecture: ['docs/architecture/**'],
9
- unitTests: ['**/test/unit/**/*.test.ts'],
10
- source: ['packages/*/src/**', 'plugins/*/src/**', 'plugins/*/plugin.yaml'],
11
- securityPaths: [],
12
- prose: ['**/*.md', '**/*.feature'],
13
- };
14
- const subdirs = (dir) => existsSync(dir) ? readdirSync(dir).filter((d) => statSync(path.join(dir, d)).isDirectory()) : [];
15
- export function loadConfig(root) {
16
- const pkg = JSON.parse(readFileSync(path.join(root, 'package.json'), 'utf8'));
17
- const own = pkg.synoikia?.workflow ?? {};
18
- const components = own.components ?? [
19
- ...subdirs(path.join(root, 'packages')),
20
- ...subdirs(path.join(root, 'plugins')),
21
- ...SHARED_COMPONENTS,
22
- ];
23
- return { ...DEFAULTS, ...own, components };
24
- }
25
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/workflow/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,IAAI,MAAM,WAAW,CAAC;AAwB7B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAElE,MAAM,CAAC,MAAM,QAAQ,GAAuC;IAC1D,cAAc,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,sBAAsB,CAAC;IAChF,QAAQ,EAAE,CAAC,0BAA0B,CAAC;IACtC,KAAK,EAAE,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IACrD,YAAY,EAAE,CAAC,sBAAsB,CAAC;IACtC,SAAS,EAAE,CAAC,2BAA2B,CAAC;IACxC,MAAM,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,uBAAuB,CAAC;IAC1E,aAAa,EAAE,EAAE;IACjB,KAAK,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC;CACnC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE,CAC9B,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAEnG,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAE3E,CAAC;IACF,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC;IACzC,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI;QACnC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACvC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACtC,GAAG,iBAAiB;KACrB,CAAC;IACF,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,CAAC;AAC7C,CAAC"}
@@ -1,20 +0,0 @@
1
- import type { Feature, GherkinDocument } from '@cucumber/messages';
2
- export interface SourceFile {
3
- path: string;
4
- text: string;
5
- }
6
- export interface ParsedScenario {
7
- file: string;
8
- feature: string;
9
- rule: string | undefined;
10
- name: string;
11
- line: number;
12
- backlog: boolean;
13
- }
14
- export declare function parseFeature(file: SourceFile): GherkinDocument;
15
- /** Every scenario in a feature, with the rule that holds it. */
16
- export declare function scenariosOf(file: string, feature: Feature): ParsedScenario[];
17
- /** Problems in a set of feature files: syntax, ids, tags, shape and solution words. */
18
- export declare function checkFeatures(files: readonly SourceFile[]): string[];
19
- /** Problems with the slice a PR builds: at most three new scenarios outside @backlog, all in one rule. */
20
- export declare function checkSlice(before: readonly SourceFile[], after: readonly SourceFile[]): string[];