@martinffx/atelier 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/LICENSE +21 -0
  3. package/README.md +285 -0
  4. package/agents/architect.md +38 -0
  5. package/agents/oracle.md +40 -0
  6. package/agents/recon.md +39 -0
  7. package/dist/atelier.js +33082 -0
  8. package/package.json +44 -0
  9. package/skills/code-conventional-commit/SKILL.md +134 -0
  10. package/skills/code-conventional-commit/evals/evals.json +23 -0
  11. package/skills/code-conventional-commit/workspace/iteration-1/eval-0/with_skill/outputs/commit-message.txt +4 -0
  12. package/skills/code-conventional-commit/workspace/iteration-1/eval-0/with_skill/outputs/eval_metadata.json +6 -0
  13. package/skills/code-conventional-commit/workspace/iteration-1/eval-1/with_skill/outputs/eval_metadata.json +6 -0
  14. package/skills/code-conventional-commit/workspace/iteration-1/eval-1/with_skill/outputs/validation-result.txt +16 -0
  15. package/skills/code-conventional-commit/workspace/iteration-1/eval-2/with_skill/outputs/commit-message.txt +8 -0
  16. package/skills/code-conventional-commit/workspace/iteration-1/eval-2/with_skill/outputs/eval_metadata.json +6 -0
  17. package/skills/code-conventional-commit/workspace/iteration-1/report.html +1325 -0
  18. package/skills/code-debug/SKILL.md +271 -0
  19. package/skills/code-debug/references/language-tools.md +139 -0
  20. package/skills/code-debug/references/techniques.md +117 -0
  21. package/skills/code-docs/SKILL.md +171 -0
  22. package/skills/code-docs/references/api-docs.md +116 -0
  23. package/skills/code-docs/references/changelog.md +64 -0
  24. package/skills/code-docs/references/readme-structure.md +94 -0
  25. package/skills/code-git-worktrees/SKILL.md +218 -0
  26. package/skills/code-perf/SKILL.md +163 -0
  27. package/skills/code-perf/references/common-bottlenecks.md +124 -0
  28. package/skills/code-perf/references/optimization-patterns.md +167 -0
  29. package/skills/code-perf/references/profiling-tools.md +126 -0
  30. package/skills/code-review/SKILL.md +78 -0
  31. package/skills/code-review/references/output.md +200 -0
  32. package/skills/code-review/references/reviewers.md +719 -0
  33. package/skills/code-review/references/rq.md +357 -0
  34. package/skills/code-review/references/rs.md +30 -0
  35. package/skills/code-security/SKILL.md +183 -0
  36. package/skills/code-security/references/owasp-top-10.md +129 -0
  37. package/skills/code-security/references/security-tools.md +102 -0
  38. package/skills/code-security/references/vulnerability-patterns.md +129 -0
  39. package/skills/code-stacked-commit/SKILL.md +155 -0
  40. package/skills/code-subagents/SKILL.md +184 -0
  41. package/skills/code-subagents/references/code-quality-reviewer-prompt.md +48 -0
  42. package/skills/code-subagents/references/implementor-prompt.md +79 -0
  43. package/skills/code-subagents/references/spec-reviewer-prompt.md +62 -0
  44. package/skills/oracle-architect/SKILL.md +246 -0
  45. package/skills/oracle-architect/references/api-design.md +345 -0
  46. package/skills/oracle-architect/references/data-modeling.md +318 -0
  47. package/skills/oracle-architect/references/ddd-patterns.md +247 -0
  48. package/skills/oracle-challenge/SKILL.md +126 -0
  49. package/skills/oracle-testing/SKILL.md +237 -0
  50. package/skills/oracle-testing/references/anti-patterns.md +618 -0
  51. package/skills/oracle-testing/references/boundaries.md +579 -0
  52. package/skills/oracle-testing/references/core-testing.md +691 -0
  53. package/skills/oracle-testing/references/edge-testing.md +794 -0
  54. package/skills/oracle-testing/references/stub-driven-tdd.md +322 -0
  55. package/skills/oracle-thinkdeep/SKILL.md +164 -0
  56. package/skills/python-architecture/SKILL.md +148 -0
  57. package/skills/python-architecture/references/data-modeling.md +558 -0
  58. package/skills/python-architecture/references/ddd.md +569 -0
  59. package/skills/python-architecture/references/functional-core.md +337 -0
  60. package/skills/python-build-tools/SKILL.md +153 -0
  61. package/skills/python-build-tools/references/basedpyright.md +321 -0
  62. package/skills/python-build-tools/references/ruff.md +225 -0
  63. package/skills/python-build-tools/references/uv.md +257 -0
  64. package/skills/python-fastapi/SKILL.md +184 -0
  65. package/skills/python-fastapi/references/api-design.md +563 -0
  66. package/skills/python-fastapi/references/dependencies.md +479 -0
  67. package/skills/python-fastapi/references/middleware.md +475 -0
  68. package/skills/python-fastapi/references/validation.md +497 -0
  69. package/skills/python-modern-python/SKILL.md +201 -0
  70. package/skills/python-modern-python/references/async.md +76 -0
  71. package/skills/python-modern-python/references/pattern-matching.md +89 -0
  72. package/skills/python-modern-python/references/typing.md +96 -0
  73. package/skills/python-monorepo/SKILL.md +146 -0
  74. package/skills/python-monorepo/references/docker.md +515 -0
  75. package/skills/python-monorepo/references/namespace-packages.md +426 -0
  76. package/skills/python-monorepo/references/workspace-config.md +341 -0
  77. package/skills/python-sqlalchemy/SKILL.md +119 -0
  78. package/skills/python-sqlalchemy/references/async.md +51 -0
  79. package/skills/python-sqlalchemy/references/models.md +67 -0
  80. package/skills/python-sqlalchemy/references/queries.md +57 -0
  81. package/skills/python-temporal/SKILL.md +128 -0
  82. package/skills/python-temporal/references/patterns.md +87 -0
  83. package/skills/python-temporal/references/testing.md +54 -0
  84. package/skills/python-testing/SKILL.md +161 -0
  85. package/skills/python-testing/references/boundaries.md +449 -0
  86. package/skills/python-testing/references/mocking.md +449 -0
  87. package/skills/python-testing/references/pytest.md +524 -0
  88. package/skills/spec-brainstorm/SKILL.md +325 -0
  89. package/skills/spec-finish/SKILL.md +159 -0
  90. package/skills/spec-implement/SKILL.md +296 -0
  91. package/skills/spec-orchestrator/SKILL.md +156 -0
  92. package/skills/spec-plan/SKILL.md +248 -0
  93. package/skills/typescript-api-design/SKILL.md +396 -0
  94. package/skills/typescript-api-design/references/error-responses.md +469 -0
  95. package/skills/typescript-build-tools/SKILL.md +447 -0
  96. package/skills/typescript-build-tools/references/biome.md +436 -0
  97. package/skills/typescript-build-tools/references/bun.md +432 -0
  98. package/skills/typescript-build-tools/references/turborepo.md +426 -0
  99. package/skills/typescript-build-tools/references/vitest.md +518 -0
  100. package/skills/typescript-drizzle-orm/SKILL.md +398 -0
  101. package/skills/typescript-drizzle-orm/references/cloudflare.md +392 -0
  102. package/skills/typescript-drizzle-orm/references/entity-pattern.md +412 -0
  103. package/skills/typescript-drizzle-orm/references/postgresql.md +191 -0
  104. package/skills/typescript-drizzle-orm/references/repository-pattern.md +479 -0
  105. package/skills/typescript-drizzle-orm/references/sqlite.md +291 -0
  106. package/skills/typescript-dynamodb-toolbox/SKILL.md +370 -0
  107. package/skills/typescript-dynamodb-toolbox/references/entity-layer.md +574 -0
  108. package/skills/typescript-dynamodb-toolbox/references/error-handling.md +495 -0
  109. package/skills/typescript-dynamodb-toolbox/references/modeling.md +332 -0
  110. package/skills/typescript-dynamodb-toolbox/references/repository-layer.md +631 -0
  111. package/skills/typescript-dynamodb-toolbox/references/testing.md +718 -0
  112. package/skills/typescript-dynamodb-toolbox/references/transactions.md +423 -0
  113. package/skills/typescript-effect-ts/SKILL.md +341 -0
  114. package/skills/typescript-effect-ts/references/core.md +412 -0
  115. package/skills/typescript-effect-ts/references/error-handling.md +468 -0
  116. package/skills/typescript-effect-ts/references/resources.md +476 -0
  117. package/skills/typescript-effect-ts/references/schema.md +536 -0
  118. package/skills/typescript-effect-ts/references/services.md +461 -0
  119. package/skills/typescript-fastify/SKILL.md +405 -0
  120. package/skills/typescript-fastify/references/plugins.md +329 -0
  121. package/skills/typescript-fastify/references/typeid.md +315 -0
  122. package/skills/typescript-functional-patterns/SKILL.md +402 -0
  123. package/skills/typescript-functional-patterns/references/adts.md +497 -0
  124. package/skills/typescript-functional-patterns/references/branded-types.md +542 -0
  125. package/skills/typescript-functional-patterns/references/migration-guide.md +695 -0
  126. package/skills/typescript-functional-patterns/references/option-result.md +585 -0
  127. package/skills/typescript-testing/SKILL.md +353 -0
  128. package/skills/typescript-testing/references/mocking.md +675 -0
  129. package/skills/typescript-testing/references/msw.md +852 -0
  130. package/skills/typescript-testing/references/snapshot-testing.md +774 -0
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@martinffx/atelier",
3
+ "version": "0.1.0",
4
+ "description": "Personal development toolkit - spec-driven development, code quality, deep thinking, and ecosystem patterns",
5
+ "type": "module",
6
+ "bin": {
7
+ "atelier": "dist/atelier.js"
8
+ },
9
+ "repository": "github:martinffx/atelier",
10
+ "keywords": ["cli", "claude-code", "opencode", "ai-agents", "spec-driven-development"],
11
+ "license": "MIT",
12
+ "files": [
13
+ "dist/",
14
+ "skills/",
15
+ "agents/",
16
+ "README.md",
17
+ "LICENSE",
18
+ "CHANGELOG.md"
19
+ ],
20
+ "scripts": {
21
+ "build": "bun build ./src/atelier.ts --outdir ./dist --target bun",
22
+ "typecheck": "tsgo --noEmit",
23
+ "test": "bun test",
24
+ "publish": "bun run build && npm publish",
25
+ "prepare": "simple-git-hooks"
26
+ },
27
+ "simple-git-hooks": {
28
+ "commit-msg": "npx --no -- commitlint --edit $1"
29
+ },
30
+ "dependencies": {
31
+ "commander": "^13.1.0",
32
+ "gray-matter": "^4.0.3",
33
+ "inquirer": "^12.5.2",
34
+ "zod": "^3.25.0"
35
+ },
36
+ "devDependencies": {
37
+ "@commitlint/cli": "^19.8.0",
38
+ "@commitlint/config-conventional": "^19.8.0",
39
+ "@types/bun": "^1.3.13",
40
+ "@types/node": "^22.14.1",
41
+ "simple-git-hooks": "^2.12.1",
42
+ "@typescript/native-preview": "^7.0.0-dev.20260514.1"
43
+ }
44
+ }
@@ -0,0 +1,134 @@
1
+ ---
2
+ name: code-conventional-commit
3
+ description: Generate and validate conventional commit messages following the conventionalcommits.org spec. Use whenever the user wants to commit code, mentions commit messages, git commit, or asks to create a commit. Triggers on "commit", "git commit", "conventional", or when reviewing commit message format.
4
+ user-invocable: true
5
+ ---
6
+
7
+ # Conventional Commit Skill
8
+
9
+ Generate and validate commit messages following the [Conventional Commits](https://www.conventionalcommits.org/) specification.
10
+
11
+ ## Conventional Commit Format
12
+
13
+ ```
14
+ <type>(<scope>): <subject>
15
+
16
+ [optional body]
17
+
18
+ [optional footer(s)]
19
+ ```
20
+
21
+ ### Types
22
+
23
+ | Type | Description |
24
+ |------|-------------|
25
+ | `feat` | New feature |
26
+ | `fix` | Bug fix |
27
+ | `docs` | Documentation only |
28
+ | `style` | Code style (formatting, semicolons, etc.) |
29
+ | `refactor` | Code change that neither fixes nor adds |
30
+ | `test` | Adding or updating tests |
31
+ | `chore` | Build, tooling, dependencies |
32
+ | `perf` | Performance improvement |
33
+ | `ci` | CI configuration changes |
34
+ | `build` | Build system or dependencies |
35
+ | `revert` | Reverting a previous commit |
36
+
37
+ ### Rules
38
+
39
+ - **Subject**: Short description, imperative mood, lowercase, no period at end
40
+ - **Scope**: Optional, lowercase, describes what was changed (e.g., `auth`, `api`, `ui`)
41
+ - **Breaking changes**: Add `!` after type/scope: `feat(auth)!: change API`
42
+ - **Footer**: For breaking changes (`BREAKING CHANGE:`) or issue references (`Closes #123`)
43
+
44
+ ## Operations
45
+
46
+ ### 1. Generate Commit from Diff
47
+
48
+ When user wants to commit changes:
49
+
50
+ 1. Run `git status` to see changed files
51
+ 2. Run `git diff --staged` for staged changes
52
+ 3. Analyze what changed to determine:
53
+ - **Type**: Which type best describes the changes?
54
+ - **Scope**: What area was affected? (optional)
55
+ - **Subject**: What was done? (imperative: "add" not "added")
56
+ 4. Create a conventional commit message
57
+ 5. Run `git commit -m "<message>"`
58
+
59
+ **Example:**
60
+ ```
61
+ feat(auth): add JWT token refresh
62
+
63
+ Implements token refresh endpoint to extend sessions
64
+ without requiring re-authentication.
65
+
66
+ Closes #142
67
+ ```
68
+
69
+ ### 2. Validate Commit Message
70
+
71
+ When user asks to validate or check a commit message:
72
+
73
+ 1. Parse the commit message
74
+ 2. Check format: `<type>(<scope>): <subject>`
75
+ 3. Validate type is from the allowed list
76
+ 4. Check subject follows rules (lowercase, imperative, no period)
77
+ 5. Flag any issues found
78
+
79
+ ## Input Methods
80
+
81
+ | Input | Action |
82
+ |-------|--------|
83
+ | User says "commit" or "git commit" | Generate from git diff, then commit |
84
+ | User says "validate commit" | Check the commit message format |
85
+ | User pastes commit message | Validate the provided message |
86
+
87
+ ## Auto-Commit Workflow
88
+
89
+ When generating a commit:
90
+
91
+ 1. Show the user the commit message first
92
+ 2. Ask for confirmation before committing (unless user explicitly says "just do it")
93
+ 3. Execute `git commit -m "<message>"` after confirmation
94
+ 4. Show the result of the commit
95
+
96
+ ## Error Handling
97
+
98
+ - If no staged changes: `git status` shows nothing → warn user nothing to commit
99
+ - If git not initialized: Initialize repo or warn user
100
+ - If commit fails: Show error and offer to retry
101
+
102
+ ## Examples
103
+
104
+ **Input:** "I fixed the login bug"
105
+ **Output:**
106
+ ```
107
+ fix(auth): resolve login timeout issue
108
+
109
+ Users were logged out after 5 minutes due to
110
+ incorrect token expiry calculation.
111
+ ```
112
+
113
+ **Input:** "I added a new API endpoint for users"
114
+ **Output:**
115
+ ```
116
+ feat(api): add user profile endpoint
117
+
118
+ GET /users/:id returns user profile data including
119
+ name, email, and avatar URL.
120
+
121
+ Closes #89
122
+ ```
123
+
124
+ **Input:** "I changed the auth API, this breaks old clients"
125
+ **Output:**
126
+ ```
127
+ feat(auth)!: change token validation endpoint
128
+
129
+ The /auth/verify endpoint now requires Bearer token
130
+ instead of query parameter.
131
+
132
+ BREAKING CHANGE: Clients must update to send
133
+ Authorization header with Bearer token.
134
+ ```
@@ -0,0 +1,23 @@
1
+ {
2
+ "skill_name": "conventional-commit",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "Generate a commit message for these changes: Added a new user profile page component that displays user name, email, and avatar. Also added a settings modal for updating preferences.",
7
+ "expected_output": "Should produce a feat commit with proper scope, imperative subject, and optional body",
8
+ "files": []
9
+ },
10
+ {
11
+ "id": 2,
12
+ "prompt": "Validate this commit message: 'feat: added new login page' - is it valid conventional commit format?",
13
+ "expected_output": "Should identify issues: subject should be lowercase, imperative (add not added), possibly missing scope",
14
+ "files": []
15
+ },
16
+ {
17
+ "id": 3,
18
+ "prompt": "I made breaking changes to the API - the old /v1/users endpoint now returns different JSON structure. Create a commit message that properly indicates this is a breaking change.",
19
+ "expected_output": "Should produce a commit with ! in type (e.g., feat! or fix!) and BREAKING CHANGE footer",
20
+ "files": []
21
+ }
22
+ ]
23
+ }
@@ -0,0 +1,4 @@
1
+ feat(profile): add user profile page with settings modal
2
+
3
+ Adds new profile page component displaying user name, email, and
4
+ avatar. Includes settings modal for updating user preferences.
@@ -0,0 +1,6 @@
1
+ {
2
+ "eval_id": 0,
3
+ "eval_name": "generate-commit",
4
+ "prompt": "Generate a commit message for these changes: Added a new user profile page component that displays user name, email, and avatar. Also added a settings modal for updating preferences.",
5
+ "assertions": []
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "eval_id": 1,
3
+ "eval_name": "validate-commit",
4
+ "prompt": "Validate this commit message: 'feat: added new login page' - is it valid conventional commit format?",
5
+ "assertions": []
6
+ }
@@ -0,0 +1,16 @@
1
+ VALIDATION RESULT
2
+ =================
3
+ Message: 'feat: added new login page'
4
+
5
+ IS VALID: NO
6
+
7
+ Format Check:
8
+ - Type: 'feat' ✓ (valid type)
9
+ - Scope: (optional, omitted) ✓
10
+ - Subject: 'added new login page'
11
+
12
+ Issues Found:
13
+ 1. Subject must use imperative mood: use 'add' instead of 'added'
14
+
15
+ Correct format:
16
+ feat: add new login page
@@ -0,0 +1,8 @@
1
+ feat(api)!: restructure /v1/users response format
2
+
3
+ The /v1/users endpoint now returns a different JSON structure
4
+ with nested data envelope and updated field names.
5
+
6
+ BREAKING CHANGE: Response format changed from flat structure
7
+ to { data: {...}, meta: {...} }. Clients must update parsing
8
+ to access user fields via response.data instead of directly.
@@ -0,0 +1,6 @@
1
+ {
2
+ "eval_id": 2,
3
+ "eval_name": "breaking-change-commit",
4
+ "prompt": "Create a commit message that properly indicates breaking changes to the /v1/users API endpoint",
5
+ "assertions": []
6
+ }