@martinffx/atelier 0.1.0 → 1.0.1

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,78 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.0.1](https://github.com/martinffx/atelier/compare/v1.0.0...v1.0.1) (2026-05-23)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **ci:** resolve npm publish authentication failure ([7c57b85](https://github.com/martinffx/atelier/commit/7c57b8504e1f8045b9efeb7ccc5aebfb98e80050))
9
+ * **ci:** resolve npm publish authentication failure in release workflow ([5e584bb](https://github.com/martinffx/atelier/commit/5e584bb7bea0f261152cc057dfab444e4c9c1402))
10
+
11
+ ## 1.0.0 (2026-05-22)
12
+
13
+
14
+ ### ⚠ BREAKING CHANGES
15
+
16
+ * consolidate to command-based plugins
17
+
18
+ ### Features
19
+
20
+ * add claude code atelier plugin marketplace ([06fcf59](https://github.com/martinffx/atelier/commit/06fcf594f4d9889c6ce0196aad468e9e72a931b1))
21
+ * Add CLI to configure code harness ([#7](https://github.com/martinffx/atelier/issues/7)) ([64895ae](https://github.com/martinffx/atelier/commit/64895aec069fe13fb1ab739b5db8a4197f67b4e1))
22
+ * add git workflow skills - worktree, graphite, and complete-branch ([22e2721](https://github.com/martinffx/atelier/commit/22e272129177e656f07dac76124d1e281f9ed4b4))
23
+ * add parallel execution skill for dispatching parallel agents ([cde2e25](https://github.com/martinffx/atelier/commit/cde2e25a7f60d29fb42efc494546df3ea0706bde))
24
+ * add planning skill for creating implementation plans with bite-sized tasks ([fc9dd3c](https://github.com/martinffx/atelier/commit/fc9dd3c033bfbec639ea8bdd6efbfd8fff6ec5f8))
25
+ * add research skill for systematic exploration before planning ([d34bdbc](https://github.com/martinffx/atelier/commit/d34bdbcff25c5a93f3624a59f488f8d9d04300d0))
26
+ * add spec:install skill and remove command shims ([7d6c693](https://github.com/martinffx/atelier/commit/7d6c693f195a570ace08477be68c9a2e22d7318b))
27
+ * add using-atelier meta skill for skill invocation governance ([e35bee5](https://github.com/martinffx/atelier/commit/e35bee508b725b04a8b868d00c733ac879f73007))
28
+ * add verification skill for evidence-based completion claims ([b2faaf2](https://github.com/martinffx/atelier/commit/b2faaf27dca2a3b1363bfdf4d3f7fb67059686b7))
29
+ * **agents:** add oracle, architect, clerk agents and spec commands ([8eea909](https://github.com/martinffx/atelier/commit/8eea909100297dc4164b9c6a62e9f917a7ec0943))
30
+ * **code:review:** add agent dispatch and skill loading ([f629fd9](https://github.com/martinffx/atelier/commit/f629fd92674ed2bc8f95d980d2eb518f3cdd6f92))
31
+ * **code:review:** add gfreview integration with line-by-line comments ([586cf53](https://github.com/martinffx/atelier/commit/586cf53070e9dc7579d0e9db51c7028ce6652c7c))
32
+ * enhance architect with planning patterns and execution handoff ([f80416a](https://github.com/martinffx/atelier/commit/f80416a0e80f6985d837ffb5149c8de3d0c189e7))
33
+ * enhance debugging with systematic phases, iron law, and rationalization prevention ([01432c3](https://github.com/martinffx/atelier/commit/01432c3525761ff41a23a857ffbeba2605b01268))
34
+ * enhance product discovery with brainstorming patterns and hard gates ([0dcaa39](https://github.com/martinffx/atelier/commit/0dcaa39bdb247c2cba469f2d30d455dc716dc6d5))
35
+ * enhance testing with domain boundary TDD, iron law, and verification checklist ([5e8baa9](https://github.com/martinffx/atelier/commit/5e8baa98b70b7d12e9cb1f1fe4021d7fc63004b3))
36
+ * **hooks:** add SessionStart hook to load spec:orchestrator ([6efcdf4](https://github.com/martinffx/atelier/commit/6efcdf41bf99862ee01eff7f320b3dfa5d7e2a38))
37
+ * **plugin:** add code plugin with code-review and conventional-commit skills ([21ca1e3](https://github.com/martinffx/atelier/commit/21ca1e39f22cde25a9a6863f8fbcd43f7fe2462e))
38
+ * **python:** add comprehensive Python ecosystem patterns plugin ([2a549c5](https://github.com/martinffx/atelier/commit/2a549c594f87643dac43b926db955f90aebfc7ed))
39
+ * **skills:** add 5 new skills ([213aa61](https://github.com/martinffx/atelier/commit/213aa61bfe7e1259ee2e813b989f852b2757c2ee))
40
+ * **skills:** add code-review and conventional-commit skills ([c0761b0](https://github.com/martinffx/atelier/commit/c0761b023160226e7d5a2fc468685903f6f51111))
41
+ * **skills:** add product, architect, testing, and functional-patterns skills ([cd58be3](https://github.com/martinffx/atelier/commit/cd58be3a949533d7d8240a9d8f71bac84ab91b06))
42
+ * **skills:** add spec:design skill for codebase research and solution design ([31d7980](https://github.com/martinffx/atelier/commit/31d7980789a314408676b2854e5c203d61a53473))
43
+ * **skills:** add spec:implement skill for executing tasks from approved plan ([1318d9d](https://github.com/martinffx/atelier/commit/1318d9d72f424fbd91166d9a90c4529e334e925d))
44
+ * **skills:** add spec:plan skill for implementation planning and task creation ([b0e51b5](https://github.com/martinffx/atelier/commit/b0e51b5e30b2466a1a3f26879b6deaee136a83e7))
45
+ * **skills:** add spec:subagents skill for subagent dispatch patterns ([097d8cf](https://github.com/martinffx/atelier/commit/097d8cf2520ae6095dae5eb79fa8de5df9b5f2cf))
46
+ * **skills:** add stacked-commit skill using Graphite ([a91ee82](https://github.com/martinffx/atelier/commit/a91ee82baa333bd013cef102153f0bd9de280afa))
47
+ * **skills:** add using-atelier skill for skill invocation guidance ([58b0297](https://github.com/martinffx/atelier/commit/58b02970267848bdf36d8cc7d10dbff6c4e1c538))
48
+ * **skills:** add using-git-worktrees skill ([55a31c9](https://github.com/martinffx/atelier/commit/55a31c903de752bedd1cf7c2bda2ed3ba396b5a1))
49
+ * **spec:** add beads skill for task tracker CLI reference ([3ba4207](https://github.com/martinffx/atelier/commit/3ba4207c61a0afce4d54273300f1e17644c764d7))
50
+ * **spec:** add dedicated /spec:init command with guided setup ([1fd074c](https://github.com/martinffx/atelier/commit/1fd074c10470db0705a28564df086c2911618651))
51
+ * **spec:** add structured workflows with parallel execution and validation ([1671622](https://github.com/martinffx/atelier/commit/1671622b70c15c8a3a1abe662d82857847040a2e))
52
+ * **spec:** separate workflow into distinct phase commands with validation ([24fb366](https://github.com/martinffx/atelier/commit/24fb366966118a25c30abc7a5d86b5044b530a60))
53
+ * **typescript:** add build-tools skill with tooling references ([acb82e8](https://github.com/martinffx/atelier/commit/acb82e894d3e8ac834bf1612af000844222b9822))
54
+ * **typescript:** add comprehensive testing skill for Vitest and MSW ([42c751f](https://github.com/martinffx/atelier/commit/42c751f4acbe93461ec457435b2181c57ee143f4))
55
+ * **typescript:** add Effect-TS skill for functional effects ([#1](https://github.com/martinffx/atelier/issues/1)) ([558e81c](https://github.com/martinffx/atelier/commit/558e81c7cd3faf710206d7cdb4bdc7783e77f8c9))
56
+ * **typescript:** add production patterns from exchequerio ([f217d20](https://github.com/martinffx/atelier/commit/f217d2027eb968ae5728fe64914d96b479dc7f28))
57
+ * **typescript:** add sqlite, d1, and do to drizzle ([0886bb0](https://github.com/martinffx/atelier/commit/0886bb0525f34fa8ade24d9c1cd7b1b75ef03e9a))
58
+ * **typescript:** enhance dynamodb-toolbox skill with production patterns ([e115371](https://github.com/martinffx/atelier/commit/e11537116d880cdfc83db15e267b77f8e554a7a5))
59
+ * update methodology with superpowers integration, hard gates, verification, and domain boundary testing ([d68b133](https://github.com/martinffx/atelier/commit/d68b1332d97c4edde871ed91278a577f98c40a73))
60
+
61
+
62
+ ### Bug Fixes
63
+
64
+ * **architect:** correct dependency inversion principle wording ([9c42952](https://github.com/martinffx/atelier/commit/9c429527cbf6d8b0567d9fc8f9bed635949bf76d))
65
+ * **marketplace:** correct schema format for Claude Code validation ([5135e64](https://github.com/martinffx/atelier/commit/5135e64b56ba78574293ecca3c1669708149a028))
66
+ * **skills:** update spec skills with embedded schemas and skill loading ([be76e7c](https://github.com/martinffx/atelier/commit/be76e7cd9ad132ba87c9dc3b419f2c88d5e44ded))
67
+ * **skills:** update spec skills with skill loading and fix spec:subagents references ([498b3dc](https://github.com/martinffx/atelier/commit/498b3dc2ed91b5cd0e3ae9a55ef0d4e330da0422))
68
+ * update skill names to match folder names ([649d1a4](https://github.com/martinffx/atelier/commit/649d1a4ca64a1691f407fe23f0f6d1550c10ac18))
69
+ * **using-git-worktrees:** update integration section for atelier plugins ([e508f30](https://github.com/martinffx/atelier/commit/e508f30f38c40182c3781ab2b1113b5e97018ff4))
70
+
71
+
72
+ ### Code Refactoring
73
+
74
+ * consolidate to command-based plugins ([8963fe4](https://github.com/martinffx/atelier/commit/8963fe4b6f189e67eae5eecccfeed6a6658ba33b))
75
+
3
76
  ## [0.1.0] - 2026-05-08
4
77
 
5
78
  ### Added
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: scout
3
+ description: Fast codebase reconnaissance and exploration, concise summarization of findings, precise location of relevant context, and efficient workspace preparation through targeted file operations and template application
4
+ model: minimax-m2.7
5
+ ---
6
+
7
+ You are the **Scout**, a fast reconnaissance agent. Your job is to explore codebases, summarize what you find, highlight relevant context, and point others to exactly where things live. You move quickly, read minimally, and never break existing work.
8
+
9
+ ## Role
10
+
11
+ - Explore and map codebase structure, conventions, and key files
12
+ - Summarize findings with clear, concise overviews
13
+ - Highlight relevant context and explain why it matters
14
+ - Point to exact locations (file paths, line numbers, symbol names) so others can dive deeper
15
+ - Retrieve targeted snippets on request—never dump full files unless necessary
16
+ - Create files from templates and set up directory structures when asked
17
+ - Respect existing files—never overwrite without explicit direction
18
+
19
+ ## Skills
20
+
21
+ Before beginning work, scan your environment for relevant skills and load any that apply to the task at hand. Use them to guide how you explore, summarize, and present your findings.
22
+
23
+ ## Checklist
24
+
25
+ Before finishing, confirm you have:
26
+
27
+ - [ ] Retrieved only the specific context requested (no unnecessary full-file reads)
28
+ - [ ] Verified the target file does not already exist before creating
29
+ - [ ] Created parent directories as needed
30
+ - [ ] Applied all relevant variable substitutions when using templates
31
+ - [ ] Confirmed the output matches the request exactly
32
+ - [ ] Reported what was created, retrieved, or modified
33
+
34
+ ## Boundaries
35
+
36
+ - DO handle file operations and retrieval efficiently
37
+ - DO create files and directories as requested
38
+ - DON'T make design or architectural decisions
39
+ - DON'T conduct requirements discovery
40
+ - NEVER overwrite existing files unless explicitly told to
package/dist/atelier.js CHANGED
@@ -25616,42 +25616,6 @@ function handleError(error) {
25616
25616
  process.exit(1);
25617
25617
  }
25618
25618
 
25619
- // src/generators/directives.ts
25620
- var ATELIER_DIRECTIVE = `
25621
- MANDATORY SKILL ACTIVATION SEQUENCE \u2014 APPLIES TO EVERY INTERACTION
25622
-
25623
- BEFORE RESPONDING TO ANY PROMPT \u2014 Step 1 (EVALUATE):
25624
- Check ALL skills in <available_skills>. State each as YES/NO with reason.
25625
-
25626
- BEFORE RESPONDING TO ANY PROMPT \u2014 Step 2 (ACTIVATE):
25627
- For spec-orchestrator: ALWAYS YES. Invoke using the skill tool.
25628
- For any other skill marked YES: Invoke using the skill tool.
25629
-
25630
- BEFORE RESPONDING TO ANY PROMPT \u2014 Step 3 (PROCEED):
25631
- Only after Step 2 is complete, begin your response.
25632
-
25633
- BEFORE MAKING ANY CODE CHANGE:
25634
- 1. EVALUATE which language and framework skills in <available_skills> apply
25635
- 2. ACTIVATE all relevant language skills using the skill tool
25636
- 3. PROCEED only after skill loading
25637
-
25638
- BEFORE STARTING MULTI-STEP WORK:
25639
- 1. EVALUATE if subagents can parallelize the work
25640
- 2. DELEGATE to task tool with appropriate agent types
25641
- 3. PROCEED with main thread only after delegation is complete
25642
-
25643
- Preferred subagent types:
25644
- - explore: Fast codebase discovery
25645
- - recon: Targeted reconnaissance
25646
- - general: Complex multi-step tasks
25647
- - architect: System design decisions
25648
- - oracle: Requirements discovery and critical thinking
25649
-
25650
- CRITICAL: Step 1 is WORTHLESS without Step 2. Use the skill tool to ACTIVATE.
25651
- CRITICAL: Use subagents (task tool) for parallel work. Do NOT do everything in the main thread.
25652
- THIS IS NON-NEGOTIABLE.
25653
- `;
25654
-
25655
25619
  // src/generators/opencode.ts
25656
25620
  var import_gray_matter2 = __toESM(require_gray_matter(), 1);
25657
25621
  var GLOBAL_OPENCODE_DIR = join2(homedir(), ".config", "opencode");
@@ -25740,11 +25704,14 @@ function deepMerge(target, source) {
25740
25704
  return result;
25741
25705
  }
25742
25706
  function writePluginJs(config, basePath) {
25743
- const plugin = `const ATELIER_CONTEXT = \`${ATELIER_DIRECTIVE}\`;
25744
-
25745
- export default {
25707
+ const skillsPath = config.skills_path || "~/.agents/skills/atelier";
25708
+ const skillsDir = `${skillsPath}/atelier`;
25709
+ const plugin = `export default {
25710
+ config: {
25711
+ skillsDir: ${JSON.stringify(skillsDir)},
25712
+ },
25746
25713
  'experimental.chat.system.transform': (systemPrompt) => {
25747
- return systemPrompt + '\\n\\n<!-- Atelier auto-injected context -->\\n' + ATELIER_CONTEXT;
25714
+ return systemPrompt;
25748
25715
  },
25749
25716
  };
25750
25717
  `;
@@ -29920,7 +29887,6 @@ function generateClaude(config, basePath = process.cwd()) {
29920
29887
  try {
29921
29888
  writeSettingsJson(config, basePath);
29922
29889
  writeHookScript(config, basePath);
29923
- writeUserPromptHook(config, basePath);
29924
29890
  writeAgentFiles2(config, basePath);
29925
29891
  } catch (err) {
29926
29892
  throw new FileWriteError("generateClaude", err instanceof Error ? err.message : String(err));
@@ -29930,27 +29896,25 @@ function writeSettingsJson(config, basePath) {
29930
29896
  const settingsPath = join4(basePath, ".claude/settings.json");
29931
29897
  const existing = readExistingSettings(settingsPath);
29932
29898
  const isNew = Object.keys(existing).length === 0;
29933
- const sessionStartHook = {
29934
- hooks: [{ command: "hooks/atelier-session-start", type: "command" }],
29899
+ const atelierHook = {
29900
+ hooks: [
29901
+ {
29902
+ command: "hooks/atelier-session-start",
29903
+ type: "command"
29904
+ }
29905
+ ],
29935
29906
  matcher: "startup|clear|compact"
29936
29907
  };
29937
29908
  const existingSessionStart = existing.hooks?.SessionStart || [];
29938
- const hasSessionStart = existingSessionStart.some((h) => h.hooks?.some((hook) => hook.command === "hooks/atelier-session-start"));
29939
- const newSessionStart = hasSessionStart ? existingSessionStart : [...existingSessionStart, sessionStartHook];
29940
- const userPromptHook = {
29941
- hooks: [{ command: "hooks/atelier-user-prompt", type: "command" }]
29942
- };
29943
- const existingUserPrompt = existing.hooks?.UserPromptSubmit || [];
29944
- const hasUserPrompt = existingUserPrompt.some((h) => h.hooks?.some((hook) => hook.command === "hooks/atelier-user-prompt"));
29945
- const newUserPrompt = hasUserPrompt ? existingUserPrompt : [...existingUserPrompt, userPromptHook];
29909
+ const hasAtelierHook = existingSessionStart.some((h) => h.hooks?.some((hook) => hook.command === "hooks/atelier-session-start"));
29910
+ const newSessionStart = hasAtelierHook ? existingSessionStart : [...existingSessionStart, atelierHook];
29946
29911
  const settings = {
29947
29912
  ...existing,
29948
29913
  $schema: "https://json.schemastore.org/claude-code-settings.json",
29949
29914
  model: config.default_model || "opusplan",
29950
29915
  hooks: {
29951
29916
  ...existing.hooks || {},
29952
- SessionStart: newSessionStart,
29953
- UserPromptSubmit: newUserPrompt
29917
+ SessionStart: newSessionStart
29954
29918
  }
29955
29919
  };
29956
29920
  writeFileSync3(settingsPath, JSON.stringify(settings, null, 2) + `
@@ -29965,31 +29929,29 @@ function readExistingSettings(settingsPath) {
29965
29929
  return {};
29966
29930
  }
29967
29931
  }
29932
+ function escapeShellArg(arg) {
29933
+ return `'${arg.replace(/'/g, "'\\''")}'`;
29934
+ }
29968
29935
  function writeHookScript(config, basePath) {
29969
- const additionalContext = JSON.stringify({ additionalContext: ATELIER_DIRECTIVE });
29936
+ const skillsPath = config.skills_path || "~/.agents/skills/atelier";
29937
+ const safeSkillsPath = escapeShellArg(skillsPath);
29970
29938
  const script = `#!/bin/bash
29971
29939
  # Atelier session-start hook
29940
+ # Skills path: ${skillsPath}
29972
29941
 
29973
- echo '${additionalContext}'
29942
+ SKILLS_DIR=${safeSkillsPath}
29943
+
29944
+ if [ -d "$SKILLS_DIR/atelier" ]; then
29945
+ echo '{"additionalContext": {"skillsDir": "'"$SKILLS_DIR"'/atelier"}}'
29946
+ else
29947
+ echo '{"additionalContext": {}}'
29948
+ fi
29974
29949
  `;
29975
29950
  const hookPath = join4(basePath, "hooks/atelier-session-start");
29976
29951
  writeFileSync3(hookPath, script);
29977
29952
  chmodSync(hookPath, 448);
29978
29953
  console.log("Created hooks/atelier-session-start");
29979
29954
  }
29980
- function writeUserPromptHook(config, basePath) {
29981
- const script = `#!/bin/bash
29982
- # Atelier user-prompt hook
29983
-
29984
- cat <<'EOF'
29985
- ${ATELIER_DIRECTIVE}
29986
- EOF
29987
- `;
29988
- const hookPath = join4(basePath, "hooks/atelier-user-prompt");
29989
- writeFileSync3(hookPath, script);
29990
- chmodSync(hookPath, 448);
29991
- console.log("Created hooks/atelier-user-prompt");
29992
- }
29993
29955
  function writeAgentFiles2(config, basePath) {
29994
29956
  const agentsDir = join4(basePath, ".claude/agents");
29995
29957
  for (const agent of config.agents) {
package/package.json CHANGED
@@ -1,13 +1,19 @@
1
1
  {
2
2
  "name": "@martinffx/atelier",
3
- "version": "0.1.0",
3
+ "version": "1.0.1",
4
4
  "description": "Personal development toolkit - spec-driven development, code quality, deep thinking, and ecosystem patterns",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "atelier": "dist/atelier.js"
8
8
  },
9
9
  "repository": "github:martinffx/atelier",
10
- "keywords": ["cli", "claude-code", "opencode", "ai-agents", "spec-driven-development"],
10
+ "keywords": [
11
+ "cli",
12
+ "claude-code",
13
+ "opencode",
14
+ "ai-agents",
15
+ "spec-driven-development"
16
+ ],
11
17
  "license": "MIT",
12
18
  "files": [
13
19
  "dist/",
@@ -17,6 +23,9 @@
17
23
  "LICENSE",
18
24
  "CHANGELOG.md"
19
25
  ],
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
20
29
  "scripts": {
21
30
  "build": "bun build ./src/atelier.ts --outdir ./dist --target bun",
22
31
  "typecheck": "tsgo --noEmit",
@@ -5,7 +5,7 @@ description: >
5
5
  when there's an approved spec (design.md) and the next step is breaking it into implementable
6
6
  work. Trigger when the user says "write a plan", "plan this out", "break this down",
7
7
  "I added notes" (annotation cycle), or after spec-brainstorm completes. Also trigger for
8
- "create tasks". Do NOT use for research (use spec-brainstorm) or
8
+ "create tasks" or "add to beads". Do NOT use for research (use spec-brainstorm) or
9
9
  execution (use spec-implement).
10
10
  user-invocable: true
11
11
  ---