symfonia-ai-tools 1.4.1 → 1.5.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.
- package/README.md +290 -286
- package/lib/questions.mjs +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,116 +1,117 @@
|
|
|
1
1
|
# symfonia-ai-tools
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Interactive AI tooling configurator for projects. One `npx` — complete setup for Claude Code, GitHub Copilot, Cursor, Gemini, Junie, and GSD.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Installation
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Required: Node.js 18+
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
npx symfonia-ai-tools@latest
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
You can also install globally:
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
16
|
npm install -g symfonia-ai-tools
|
|
17
17
|
symfonia-ai-tools
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
1.
|
|
22
|
-
2.
|
|
23
|
-
3.
|
|
24
|
-
4.
|
|
25
|
-
5.
|
|
26
|
-
6.
|
|
27
|
-
7.
|
|
20
|
+
The configurator guides you through:
|
|
21
|
+
1. Language selection (Polish / English)
|
|
22
|
+
2. Project type, description, tech stack
|
|
23
|
+
3. Instruction & skill packs (checkboxes)
|
|
24
|
+
4. AI tools to configure (checkboxes)
|
|
25
|
+
5. Skills to install (checkboxes — base + from selected packs)
|
|
26
|
+
6. Paths, commands, CI pipeline, JIRA prefix
|
|
27
|
+
7. MCP servers (checkboxes + tokens)
|
|
28
|
+
8. CLI installation (checkboxes)
|
|
28
29
|
|
|
29
|
-
|
|
30
|
+
The entire configurator uses arrow-key navigation — no typing numbers.
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
- **
|
|
33
|
-
- **
|
|
32
|
+
Finally, it automatically runs GSD:
|
|
33
|
+
- **New project** → `/gsd-new-project`
|
|
34
|
+
- **Existing project** → `/gsd-map-codebase` → `/gsd-new-project`
|
|
34
35
|
|
|
35
|
-
###
|
|
36
|
+
### Installation modes (existing project)
|
|
36
37
|
|
|
37
|
-
|
|
|
38
|
-
|
|
39
|
-
| **
|
|
40
|
-
| **
|
|
41
|
-
| **
|
|
38
|
+
| Mode | Description |
|
|
39
|
+
|------|-------------|
|
|
40
|
+
| **Overwrite everything** | Full reinstall — overwrites existing files |
|
|
41
|
+
| **Only new files** | Adds missing files, keeps existing ones |
|
|
42
|
+
| **MCP only** | Configures MCP servers without touching the rest |
|
|
42
43
|
|
|
43
44
|
---
|
|
44
45
|
|
|
45
|
-
##
|
|
46
|
+
## Architecture: Single Source of Truth
|
|
46
47
|
|
|
47
|
-
|
|
48
|
+
All AI tools read the same rules from one place:
|
|
48
49
|
|
|
49
50
|
```
|
|
50
|
-
.ai/guidelines.md ←
|
|
51
|
+
.ai/guidelines.md ← SINGLE SOURCE OF TRUTH
|
|
51
52
|
│
|
|
52
|
-
├── CLAUDE.md (
|
|
53
|
+
├── CLAUDE.md (reference)
|
|
53
54
|
├── .github/copilot-instructions.md (pointer)
|
|
54
55
|
├── .cursor/rules/global.mdc (pointer)
|
|
55
|
-
├── .gemini/settings.json (
|
|
56
|
+
├── .gemini/settings.json (reference)
|
|
56
57
|
└── .junie/guidelines.md (pointer)
|
|
57
58
|
```
|
|
58
59
|
|
|
59
|
-
|
|
60
|
+
Change `.ai/guidelines.md` — all agents will see it.
|
|
60
61
|
|
|
61
62
|
---
|
|
62
63
|
|
|
63
|
-
##
|
|
64
|
+
## Packs
|
|
64
65
|
|
|
65
|
-
|
|
66
|
+
Instead of choosing a single stack, you pick any combination of instruction & skill packs — with checkboxes. Each pack declares its instructions, skills, and required placeholders in `pack.json`.
|
|
66
67
|
|
|
67
|
-
###
|
|
68
|
+
### Available packs
|
|
68
69
|
|
|
69
|
-
|
|
|
70
|
-
|
|
71
|
-
| **Vue 3 + TypeScript** | 6
|
|
72
|
-
| **Vitest** | 1
|
|
73
|
-
| **Storybook** | 1
|
|
74
|
-
| **Laravel + PHP** | 4
|
|
75
|
-
| **Playwright** | 1
|
|
76
|
-
| **Docker** | 1
|
|
70
|
+
| Pack | Contents | Default |
|
|
71
|
+
|------|----------|---------|
|
|
72
|
+
| **Vue 3 + TypeScript** | 6 instructions, 3 skills | Yes |
|
|
73
|
+
| **Vitest** | 1 instruction | Yes |
|
|
74
|
+
| **Storybook** | 1 instruction | No |
|
|
75
|
+
| **Laravel + PHP** | 4 instructions, 7 skills | No |
|
|
76
|
+
| **Playwright E2E** | 1 instruction, 3 skills | No |
|
|
77
|
+
| **Docker** | 1 instruction | No |
|
|
77
78
|
|
|
78
|
-
|
|
79
|
+
Packs are independent — you can combine e.g. Vue 3 + Playwright + Docker.
|
|
79
80
|
|
|
80
81
|
---
|
|
81
82
|
|
|
82
|
-
##
|
|
83
|
+
## What it installs
|
|
83
84
|
|
|
84
|
-
###
|
|
85
|
+
### Per-tool files
|
|
85
86
|
|
|
86
|
-
|
|
|
87
|
-
|
|
87
|
+
| Tool | Files |
|
|
88
|
+
|------|-------|
|
|
88
89
|
| **Claude Code** | `CLAUDE.md`, `.claude/settings.local.json` (permissions + deny rules) |
|
|
89
90
|
| **GitHub Copilot** | `.github/copilot-instructions.md`, `.github/pull_request_template.md`, `.github/instructions/`, `.github/prompts/`, `.github/skills/` |
|
|
90
91
|
| **Cursor IDE** | `.cursor/rules/global.mdc`, `.cursor/mcp.json` |
|
|
91
92
|
| **Gemini** | `.gemini/settings.json` |
|
|
92
93
|
| **JetBrains Junie** | `.junie/guidelines.md` |
|
|
93
94
|
|
|
94
|
-
###
|
|
95
|
+
### Shared files
|
|
95
96
|
|
|
96
|
-
|
|
|
97
|
-
|
|
98
|
-
| `.ai/guidelines.md` |
|
|
99
|
-
| `.ai/instructions/` |
|
|
100
|
-
| `.ai/prompts/` | Reusable
|
|
101
|
-
| `.ai/skills/` |
|
|
102
|
-
| `.ai/context/` |
|
|
97
|
+
| File | Description |
|
|
98
|
+
|------|-------------|
|
|
99
|
+
| `.ai/guidelines.md` | Main project rules (source of truth) |
|
|
100
|
+
| `.ai/instructions/` | Contextual instructions per file type |
|
|
101
|
+
| `.ai/prompts/` | Reusable AI prompts |
|
|
102
|
+
| `.ai/skills/` | Skills — step-by-step workflows |
|
|
103
|
+
| `.ai/context/` | Project context (architecture, API spec, glossary) |
|
|
103
104
|
| `commit-instructions.md` | Commit conventions + branch naming |
|
|
104
|
-
| `.gitignore` | Pre-
|
|
105
|
-
| `.editorconfig` |
|
|
105
|
+
| `.gitignore` | Pre-configured (AI tokens, .env, IDE) |
|
|
106
|
+
| `.editorconfig` | Consistent formatting (utf-8, lf, spaces) |
|
|
106
107
|
|
|
107
108
|
---
|
|
108
109
|
|
|
109
|
-
## Instructions (
|
|
110
|
+
## Instructions (contextual instructions)
|
|
110
111
|
|
|
111
|
-
Instructions
|
|
112
|
+
Instructions are files with rules that AI applies automatically when working with matching files. Each instruction has an `applyTo` frontmatter with a glob pattern.
|
|
112
113
|
|
|
113
|
-
###
|
|
114
|
+
### How they work
|
|
114
115
|
|
|
115
116
|
```yaml
|
|
116
117
|
---
|
|
@@ -120,205 +121,206 @@ applyTo: "**/*.vue"
|
|
|
120
121
|
...
|
|
121
122
|
```
|
|
122
123
|
|
|
123
|
-
|
|
124
|
+
When AI opens/edits a file matching `applyTo`, it automatically loads those instructions as context.
|
|
124
125
|
|
|
125
|
-
### Vue 3 + TypeScript (6
|
|
126
|
+
### Vue 3 + TypeScript (6 instructions)
|
|
126
127
|
|
|
127
|
-
|
|
|
128
|
-
|
|
128
|
+
| Instruction | applyTo | What it teaches AI |
|
|
129
|
+
|-------------|---------|-------------------|
|
|
129
130
|
| `vue.instructions.md` | `**/*.vue` | Composition API, defineProps, withDefaults, template order |
|
|
130
|
-
| `store.instructions.md` | `**/*.store.ts, **/stores/**` | Pinia setup syntax, ref/computed,
|
|
131
|
-
| `api.instructions.md` | `**/*Service*.ts, **/api/**` | useApi singleton,
|
|
132
|
-
| `coding-conventions.instructions.md` | `**/*.vue, **/*.ts, **/*.scss` | Naming (camelCase/PascalCase), I/E/T
|
|
131
|
+
| `store.instructions.md` | `**/*.store.ts, **/stores/**` | Pinia setup syntax, ref/computed, async actions |
|
|
132
|
+
| `api.instructions.md` | `**/*Service*.ts, **/api/**` | useApi singleton, interceptors, error handling |
|
|
133
|
+
| `coding-conventions.instructions.md` | `**/*.vue, **/*.ts, **/*.scss` | Naming (camelCase/PascalCase), I/E/T prefixes, CSS single-dash |
|
|
133
134
|
| `composables.instructions.md` | `**/composables/**, **/use*.ts` | useAsyncDataLoader, form composable, filter composable |
|
|
134
135
|
| `forms.instructions.md` | `**/*Form*.vue, **/validation*` | ValidationBuilder, computed validation, 422 handling |
|
|
135
136
|
|
|
136
|
-
### Vitest (1
|
|
137
|
+
### Vitest (1 instruction)
|
|
137
138
|
|
|
138
|
-
|
|
|
139
|
-
|
|
140
|
-
| `vitest.instructions.md` | `**/*.test.ts, **/*.spec.ts` | mount, shallowMount, mocking, data-testid
|
|
139
|
+
| Instruction | applyTo | What it teaches AI |
|
|
140
|
+
|-------------|---------|-------------------|
|
|
141
|
+
| `vitest.instructions.md` | `**/*.test.ts, **/*.spec.ts` | mount, shallowMount, mocking, data-testid selectors |
|
|
141
142
|
|
|
142
|
-
### Storybook (1
|
|
143
|
+
### Storybook (1 instruction)
|
|
143
144
|
|
|
144
|
-
|
|
|
145
|
-
|
|
146
|
-
| `storybook.instructions.md` | `**/*.stories.ts` | Meta + StoryObj, autodocs, argTypes,
|
|
145
|
+
| Instruction | applyTo | What it teaches AI |
|
|
146
|
+
|-------------|---------|-------------------|
|
|
147
|
+
| `storybook.instructions.md` | `**/*.stories.ts` | Meta + StoryObj, autodocs, argTypes, variants |
|
|
147
148
|
|
|
148
|
-
### Laravel + PHP (4
|
|
149
|
+
### Laravel + PHP (4 instructions)
|
|
149
150
|
|
|
150
|
-
|
|
|
151
|
-
|
|
152
|
-
| `module.instructions.md` | `**/Modules/**` |
|
|
151
|
+
| Instruction | applyTo | What it teaches AI |
|
|
152
|
+
|-------------|---------|-------------------|
|
|
153
|
+
| `module.instructions.md` | `**/Modules/**` | Module structure, module.json, ServiceProvider |
|
|
153
154
|
| `service-repository.instructions.md` | `**/*Service*.php, **/*Repository*.php` | CQRS (Command/Query repos), readonly services, DTO |
|
|
154
|
-
| `api-resource.instructions.md` | `**/*Resource*.php, **/*Request*.php` | Resources
|
|
155
|
+
| `api-resource.instructions.md` | `**/*Resource*.php, **/*Request*.php` | Resources with whenLoaded(), Form Requests, Policies |
|
|
155
156
|
| `testing.instructions.md` | `**/*Test*.php, **/tests/**` | PHPUnit, data providers, factories, Laravel fakes |
|
|
156
157
|
|
|
157
|
-
### Playwright (1
|
|
158
|
+
### Playwright (1 instruction)
|
|
158
159
|
|
|
159
|
-
|
|
|
160
|
-
|
|
161
|
-
| `playwright.instructions.md` | `**/*.spec.ts (e2e)` | Page Object Model,
|
|
160
|
+
| Instruction | applyTo | What it teaches AI |
|
|
161
|
+
|-------------|---------|-------------------|
|
|
162
|
+
| `playwright.instructions.md` | `**/*.spec.ts (e2e)` | Page Object Model, selectors, waiting for elements |
|
|
162
163
|
|
|
163
|
-
### Docker (1
|
|
164
|
+
### Docker (1 instruction)
|
|
164
165
|
|
|
165
|
-
|
|
|
166
|
-
|
|
167
|
-
| `docker.instructions.md` | `**/Dockerfile, **/docker-compose*` | Artisan
|
|
166
|
+
| Instruction | applyTo | What it teaches AI |
|
|
167
|
+
|-------------|---------|-------------------|
|
|
168
|
+
| `docker.instructions.md` | `**/Dockerfile, **/docker-compose*` | Artisan in container, multi-stage build |
|
|
168
169
|
|
|
169
|
-
###
|
|
170
|
+
### Adding your own instruction
|
|
170
171
|
|
|
171
|
-
1.
|
|
172
|
+
1. Create a file in `.ai/instructions/`:
|
|
172
173
|
```markdown
|
|
173
174
|
---
|
|
174
175
|
applyTo: "**/*.graphql"
|
|
175
176
|
---
|
|
176
177
|
# GraphQL Instructions
|
|
177
|
-
|
|
178
|
+
Rules specific to GraphQL files...
|
|
178
179
|
```
|
|
179
|
-
2. Mirror
|
|
180
|
+
2. Mirror to `.github/instructions/` happens automatically if Copilot is selected
|
|
180
181
|
|
|
181
182
|
---
|
|
182
183
|
|
|
183
|
-
## Guidelines —
|
|
184
|
+
## Guidelines — what it contains
|
|
184
185
|
|
|
185
|
-
|
|
186
|
-
1. **Header** — project overview, tech stack,
|
|
187
|
-
2. **
|
|
186
|
+
The `.ai/guidelines.md` file is assembled automatically from:
|
|
187
|
+
1. **Header** — project overview, tech stack, commands, CI, commit rules, branch naming, Forbidden section, testing strategy
|
|
188
|
+
2. **Pack sections** — each selected pack appends its section (e.g. Vue 3 architecture, Laravel conventions)
|
|
188
189
|
|
|
189
|
-
###
|
|
190
|
+
### Sections in guidelines
|
|
190
191
|
|
|
191
|
-
|
|
|
192
|
-
|
|
193
|
-
| Project Overview |
|
|
192
|
+
| Section | Contents |
|
|
193
|
+
|---------|----------|
|
|
194
|
+
| Project Overview | Name, description, tech stack |
|
|
194
195
|
| Commands | test, build, lint, CI |
|
|
195
|
-
| Commits & Branches |
|
|
196
|
-
| CI Pipeline |
|
|
197
|
-
| Forbidden |
|
|
198
|
-
| Testing Strategy |
|
|
199
|
-
| Skills | Pointer
|
|
200
|
-
| Instructions | Pointer
|
|
201
|
-
| Context | Pointer
|
|
196
|
+
| Commits & Branches | Commit format, branch naming convention |
|
|
197
|
+
| CI Pipeline | Command that must pass before PR |
|
|
198
|
+
| Forbidden | What AI must NOT do without approval |
|
|
199
|
+
| Testing Strategy | When to use unit, integration, E2E, regression |
|
|
200
|
+
| Skills | Pointer to `.ai/skills/` |
|
|
201
|
+
| Instructions | Pointer to `.ai/instructions/` |
|
|
202
|
+
| Context | Pointer to `.ai/context/` |
|
|
202
203
|
|
|
203
204
|
---
|
|
204
205
|
|
|
205
|
-
## Skills (
|
|
206
|
+
## Skills (step-by-step workflows)
|
|
206
207
|
|
|
207
|
-
Skills
|
|
208
|
+
Skills are ready-made procedures that AI executes step by step. Each skill has a trigger, input, steps, and verification checklist.
|
|
208
209
|
|
|
209
|
-
###
|
|
210
|
+
### How to use
|
|
210
211
|
|
|
211
|
-
|
|
212
|
+
Tell the AI:
|
|
212
213
|
|
|
213
214
|
```
|
|
214
|
-
"
|
|
215
|
-
"
|
|
216
|
-
"
|
|
217
|
-
"wtf" —
|
|
215
|
+
"Using skill smf-new-module, create a users module"
|
|
216
|
+
"Run skill smf-debug for the TypeError in UserService"
|
|
217
|
+
"Follow skill smf-pr-prepare"
|
|
218
|
+
"wtf" — quick session status
|
|
218
219
|
```
|
|
219
220
|
|
|
220
|
-
AI
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
###
|
|
225
|
-
|
|
226
|
-
| Skill |
|
|
227
|
-
|
|
228
|
-
| `smf-debug` |
|
|
229
|
-
| `smf-refactor` |
|
|
230
|
-
| `smf-write-tests` |
|
|
231
|
-
| `smf-pr-prepare` |
|
|
232
|
-
| `smf-hotfix` |
|
|
233
|
-
| `smf-wtf` |
|
|
234
|
-
| `smf-babysit-prs` |
|
|
235
|
-
| `smf-my-prs` |
|
|
236
|
-
| `smf-pr-dashboard` |
|
|
237
|
-
| `smf-jira-task` |
|
|
238
|
-
| `smf-jira-explorer` |
|
|
239
|
-
| `smf-fill-worklogs` |
|
|
240
|
-
| `smf-grafana-logs` |
|
|
241
|
-
| `smf-aws-analysis` |
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
| `smf-new-
|
|
249
|
-
| `smf-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
| `smf-new-
|
|
257
|
-
| `smf-
|
|
258
|
-
| `smf-
|
|
259
|
-
| `smf-
|
|
260
|
-
| `smf-testing-
|
|
261
|
-
| `smf-testing-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
| `smf-playwright
|
|
269
|
-
| `smf-playwright-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
221
|
+
AI reads `SKILL.md` and executes the steps sequentially.
|
|
222
|
+
|
|
223
|
+
All skills have the `smf-` prefix (Symfonia). The configurator lets you choose which skills to install with checkboxes.
|
|
224
|
+
|
|
225
|
+
### Base skills (15 skills)
|
|
226
|
+
|
|
227
|
+
| Skill | Purpose | When to use | Requires |
|
|
228
|
+
|-------|---------|-------------|----------|
|
|
229
|
+
| `smf-debug` | Systematic debugging | Bug, error, unexpected behavior | — |
|
|
230
|
+
| `smf-refactor` | Safe refactoring | Extracting, simplifying, moving code | — |
|
|
231
|
+
| `smf-write-tests` | Adding tests | Existing code without test coverage | — |
|
|
232
|
+
| `smf-pr-prepare` | PR preparation | Before push — self-review, cleanup, description | — |
|
|
233
|
+
| `smf-hotfix` | Quick production fix | Branch from main, minimal fix, regression test | — |
|
|
234
|
+
| `smf-wtf` | Quick session status | "Where was I?", resume after break | — |
|
|
235
|
+
| `smf-babysit-prs` | PR review monitoring | Periodic checking for new PRs to review | gh CLI |
|
|
236
|
+
| `smf-my-prs` | Own PR status | Check approvals, comments | gh CLI |
|
|
237
|
+
| `smf-pr-dashboard` | PR dashboard | Combo babysit-prs + my-prs with loop | gh CLI |
|
|
238
|
+
| `smf-jira-task` | Full Jira workflow | Ticket → branch → impl → PR → Jira update | Jira MCP + gh CLI |
|
|
239
|
+
| `smf-jira-explorer` | Browse Jira | Sprint, epic, backlog, search, statistics | Jira MCP |
|
|
240
|
+
| `smf-fill-worklogs` | Fill worklogs | Populate hours based on git commits | Jira MCP |
|
|
241
|
+
| `smf-grafana-logs` | Grafana logs | Production debugging — Loki queries, error analysis | Grafana MCP |
|
|
242
|
+
| `smf-aws-analysis` | AWS analysis | Service selection, architecture, costs | Context7 MCP |
|
|
243
|
+
| `smf-figma-analysis` | Figma mockup analysis | Figma selection link → UI specification | Figma MCP |
|
|
244
|
+
|
|
245
|
+
### Vue 3 + TypeScript skills (3 skills)
|
|
246
|
+
|
|
247
|
+
| Skill | Purpose | When to use |
|
|
248
|
+
|-------|---------|-------------|
|
|
249
|
+
| `smf-new-module` | New module from scratch | types → service → store → composables → views → routes → tests |
|
|
250
|
+
| `smf-new-component` | New component | Component + story + test + data-testid |
|
|
251
|
+
| `smf-api-integration` | API integration | types + mapper → service → store → composable → view |
|
|
252
|
+
|
|
253
|
+
### Laravel + PHP skills (7 skills)
|
|
254
|
+
|
|
255
|
+
| Skill | Purpose | When to use |
|
|
256
|
+
|-------|---------|-------------|
|
|
257
|
+
| `smf-new-module` | New module from scratch | model → migration → CQRS repos → service → DTO → controller → tests |
|
|
258
|
+
| `smf-new-endpoint` | New API endpoint | request → controller → DTO → service → resource → policy → route → tests |
|
|
259
|
+
| `smf-migration` | DB migration | create/modify table → rollback test → model update → factory |
|
|
260
|
+
| `smf-queued-job` | Job / Event / Listener | Job class → retry/backoff → failed handler → idempotency → tests |
|
|
261
|
+
| `smf-testing-feature` | Feature tests (HTTP/DB) | Feature test conventions, delta pattern, data resilience |
|
|
262
|
+
| `smf-testing-unit` | Unit tests | Isolated tests without DB, PHPUnit mocks, data providers |
|
|
263
|
+
| `smf-testing-manual` | Manual HTTP tests | JetBrains HTTP Client — `.http` files for interactive API testing |
|
|
264
|
+
|
|
265
|
+
### Playwright skills (3 skills)
|
|
266
|
+
|
|
267
|
+
| Skill | Purpose | When to use |
|
|
268
|
+
|-------|---------|-------------|
|
|
269
|
+
| `smf-playwright` | New E2E test | Page Object → scenario → assertions |
|
|
270
|
+
| `smf-playwright-record` | Record test | codegen → cleanup → Page Object |
|
|
271
|
+
| `smf-playwright-codereview` | E2E test review | Playwright test quality checklist |
|
|
272
|
+
|
|
273
|
+
### Creating your own skill
|
|
274
|
+
|
|
275
|
+
1. Create a directory in `.ai/skills/smf-your-skill/`
|
|
276
|
+
2. Copy the template: `cp .ai/skills/TEMPLATE.md .ai/skills/smf-your-skill/SKILL.md`
|
|
277
|
+
3. Fill in sections: Trigger, Input, Steps, Verification checklist
|
|
278
|
+
4. If using Copilot, copy to `.github/skills/`
|
|
277
279
|
|
|
278
280
|
---
|
|
279
281
|
|
|
280
|
-
## Prompts (reusable
|
|
282
|
+
## Prompts (reusable prompts)
|
|
281
283
|
|
|
282
|
-
|
|
284
|
+
Prompts are ready-made commands for AI to execute complex tasks in a single invocation.
|
|
283
285
|
|
|
284
|
-
###
|
|
286
|
+
### Available prompts
|
|
285
287
|
|
|
286
|
-
| Prompt |
|
|
287
|
-
|
|
288
|
-
| `codereview.prompt.md` |
|
|
289
|
-
| `security-review.prompt.md` |
|
|
290
|
-
| `duplicate-code-analysis.prompt.md` |
|
|
288
|
+
| Prompt | Purpose | How to use |
|
|
289
|
+
|--------|---------|------------|
|
|
290
|
+
| `codereview.prompt.md` | Comprehensive branch code review | "Run code review per `.ai/prompts/codereview.prompt.md`" |
|
|
291
|
+
| `security-review.prompt.md` | Security audit (OWASP Top 10) | "Run security review per `.ai/prompts/security-review.prompt.md`" |
|
|
292
|
+
| `duplicate-code-analysis.prompt.md` | Code duplication detection | "Find duplicates per `.ai/prompts/duplicate-code-analysis.prompt.md`" |
|
|
291
293
|
|
|
292
|
-
###
|
|
294
|
+
### Usage across tools
|
|
293
295
|
|
|
294
296
|
**Claude Code:**
|
|
295
297
|
```
|
|
296
|
-
|
|
298
|
+
Read .ai/prompts/codereview.prompt.md and review this branch
|
|
297
299
|
```
|
|
298
300
|
|
|
299
301
|
**GitHub Copilot Chat:**
|
|
300
302
|
```
|
|
301
|
-
@workspace
|
|
303
|
+
@workspace Run code review per .github/prompts/codereview.prompt.md
|
|
302
304
|
```
|
|
303
305
|
|
|
304
306
|
---
|
|
305
307
|
|
|
306
|
-
##
|
|
308
|
+
## MCP Servers
|
|
307
309
|
|
|
308
|
-
MCP (Model Context Protocol)
|
|
310
|
+
MCP (Model Context Protocol) allows AI to communicate with external systems.
|
|
309
311
|
|
|
310
|
-
|
|
|
311
|
-
|
|
312
|
-
| **Jira Cloud** |
|
|
313
|
-
| **Bitbucket Cloud** |
|
|
314
|
-
| **Figma** |
|
|
315
|
-
| **Grafana** |
|
|
316
|
-
| **Context7** |
|
|
312
|
+
| Server | Purpose | Requires token |
|
|
313
|
+
|--------|---------|----------------|
|
|
314
|
+
| **Jira Cloud** | Fetch tickets for AI context | Yes |
|
|
315
|
+
| **Bitbucket Cloud** | Repository integration | Yes |
|
|
316
|
+
| **Figma** | UI mockup analysis | Yes |
|
|
317
|
+
| **Grafana** | Application logs (Loki) | Yes |
|
|
318
|
+
| **Context7** | Library documentation | No |
|
|
317
319
|
|
|
318
|
-
###
|
|
320
|
+
### Where to generate tokens
|
|
319
321
|
|
|
320
|
-
|
|
|
321
|
-
|
|
322
|
+
| Service | Link |
|
|
323
|
+
|---------|------|
|
|
322
324
|
| Jira API Token | https://id.atlassian.com/manage-profile/security/api-tokens |
|
|
323
325
|
| Bitbucket App Password | https://bitbucket.org/account/settings/app-passwords/ |
|
|
324
326
|
| Figma Access Token | Figma → Settings → Personal access tokens |
|
|
@@ -326,76 +328,77 @@ MCP (Model Context Protocol) pozwala AI na komunikacje z zewnetrznymi systemami.
|
|
|
326
328
|
|
|
327
329
|
### MCP pre-selection
|
|
328
330
|
|
|
329
|
-
|
|
331
|
+
Skills declare required MCP servers. When you select e.g. `smf-jira-task`, Jira Cloud will be automatically checked in the MCP step with information about which skills require it.
|
|
330
332
|
|
|
331
|
-
| Skill |
|
|
332
|
-
|
|
333
|
+
| Skill | Requires MCP |
|
|
334
|
+
|-------|-------------|
|
|
333
335
|
| `smf-jira-task`, `smf-jira-explorer`, `smf-fill-worklogs` | Jira Cloud |
|
|
334
336
|
| `smf-grafana-logs` | Grafana |
|
|
335
337
|
| `smf-aws-analysis` | Context7 |
|
|
338
|
+
| `smf-figma-analysis` | Figma |
|
|
336
339
|
|
|
337
340
|
### Auto-detect
|
|
338
341
|
|
|
339
|
-
|
|
340
|
-
- **
|
|
341
|
-
- **JIRA prefix** —
|
|
342
|
+
The configurator automatically detects from the git repository:
|
|
343
|
+
- **Platform** — GitHub / Bitbucket / GitLab (from `git remote`)
|
|
344
|
+
- **JIRA prefix** — from branch names (e.g. `feature/PROJ-123` → `PROJ`)
|
|
342
345
|
- **Base branch** — develop / main / master
|
|
343
346
|
|
|
344
|
-
|
|
347
|
+
Detected values are suggested as defaults — you can change them.
|
|
345
348
|
|
|
346
|
-
###
|
|
349
|
+
### Automatic configuration
|
|
347
350
|
|
|
348
|
-
|
|
349
|
-
-
|
|
350
|
-
-
|
|
351
|
-
-
|
|
351
|
+
The installer automatically:
|
|
352
|
+
- Saves config to `.claude/settings.local.json` and `.cursor/mcp.json`
|
|
353
|
+
- Registers servers in Claude CLI (`claude mcp add -s project`)
|
|
354
|
+
- Verification: `claude mcp list`
|
|
352
355
|
|
|
353
356
|
---
|
|
354
357
|
|
|
355
358
|
## GSD (Get Shit Done)
|
|
356
359
|
|
|
357
|
-
GSD
|
|
360
|
+
GSD is a system for structuring AI work — planning, execution, and verification in a repeatable process.
|
|
358
361
|
|
|
359
|
-
###
|
|
362
|
+
### Why it's required
|
|
360
363
|
|
|
361
|
-
-
|
|
362
|
-
-
|
|
363
|
-
-
|
|
364
|
+
- Prevents **context rot** (AI quality degradation during long sessions)
|
|
365
|
+
- Structures work into phases with checkpoints
|
|
366
|
+
- Automatically maps the codebase in existing projects
|
|
364
367
|
|
|
365
|
-
###
|
|
368
|
+
### Installation
|
|
366
369
|
|
|
367
370
|
```bash
|
|
368
371
|
npx get-shit-done-cc@latest
|
|
369
372
|
```
|
|
370
373
|
|
|
371
|
-
###
|
|
374
|
+
### Key commands
|
|
372
375
|
|
|
373
|
-
|
|
|
374
|
-
|
|
375
|
-
| `/gsd-new-project` |
|
|
376
|
-
| `/gsd-plan-phase` |
|
|
377
|
-
| `/gsd-execute-phase` |
|
|
378
|
-
| `/gsd-verify-work` |
|
|
379
|
-
| `/gsd-progress` | Status
|
|
380
|
-
| `/gsd-debug` |
|
|
381
|
-
| `/gsd-map-codebase` |
|
|
376
|
+
| Command | Purpose |
|
|
377
|
+
|---------|---------|
|
|
378
|
+
| `/gsd-new-project` | Project initialization |
|
|
379
|
+
| `/gsd-plan-phase` | Phase planning |
|
|
380
|
+
| `/gsd-execute-phase` | Execution |
|
|
381
|
+
| `/gsd-verify-work` | UAT verification |
|
|
382
|
+
| `/gsd-progress` | Status and next steps |
|
|
383
|
+
| `/gsd-debug` | Systematic debugging |
|
|
384
|
+
| `/gsd-map-codebase` | Existing code mapping |
|
|
382
385
|
|
|
383
386
|
---
|
|
384
387
|
|
|
385
|
-
##
|
|
388
|
+
## Installed file structure
|
|
386
389
|
|
|
387
390
|
```
|
|
388
|
-
|
|
391
|
+
project/
|
|
389
392
|
├── .ai/
|
|
390
|
-
│ ├── guidelines.md # Source of truth (header +
|
|
391
|
-
│ ├── instructions/ #
|
|
393
|
+
│ ├── guidelines.md # Source of truth (header + selected packs)
|
|
394
|
+
│ ├── instructions/ # Contextual instructions (applyTo)
|
|
392
395
|
│ │ ├── vue.instructions.md
|
|
393
396
|
│ │ └── ...
|
|
394
|
-
│ ├── prompts/ # Reusable
|
|
397
|
+
│ ├── prompts/ # Reusable prompts
|
|
395
398
|
│ │ ├── codereview.prompt.md
|
|
396
399
|
│ │ ├── security-review.prompt.md
|
|
397
400
|
│ │ └── duplicate-code-analysis.prompt.md
|
|
398
|
-
│ ├── skills/ # Workflow
|
|
401
|
+
│ ├── skills/ # Workflow skills
|
|
399
402
|
│ │ ├── smf-debug/SKILL.md
|
|
400
403
|
│ │ ├── smf-refactor/SKILL.md
|
|
401
404
|
│ │ ├── smf-write-tests/SKILL.md
|
|
@@ -412,16 +415,16 @@ projekt/
|
|
|
412
415
|
│ │ ├── smf-aws-analysis/SKILL.md
|
|
413
416
|
│ │ ├── smf-figma-analysis/SKILL.md
|
|
414
417
|
│ │ └── [smf-pack-specific]/SKILL.md
|
|
415
|
-
│ └── context/ #
|
|
416
|
-
│ └── README.md # (
|
|
418
|
+
│ └── context/ # Project context
|
|
419
|
+
│ └── README.md # (add architecture.md, api-spec.md, etc. here)
|
|
417
420
|
├── .claude/
|
|
418
421
|
│ └── settings.local.json # Permissions (allow/deny) + MCP servers
|
|
419
422
|
├── .github/
|
|
420
423
|
│ ├── copilot-instructions.md # Pointer → .ai/guidelines.md
|
|
421
|
-
│ ├── pull_request_template.md #
|
|
422
|
-
│ ├── instructions/ # Mirror
|
|
423
|
-
│ ├── prompts/ # Mirror
|
|
424
|
-
│ └── skills/ # Mirror
|
|
424
|
+
│ ├── pull_request_template.md # PR template
|
|
425
|
+
│ ├── instructions/ # Mirror from .ai/instructions/
|
|
426
|
+
│ ├── prompts/ # Mirror from .ai/prompts/
|
|
427
|
+
│ └── skills/ # Mirror from .ai/skills/
|
|
425
428
|
├── .cursor/
|
|
426
429
|
│ ├── rules/global.mdc # Pointer → .ai/guidelines.md
|
|
427
430
|
│ └── mcp.json # MCP servers
|
|
@@ -429,101 +432,102 @@ projekt/
|
|
|
429
432
|
│ └── settings.json # Pointer → .ai/guidelines.md
|
|
430
433
|
├── .junie/
|
|
431
434
|
│ └── guidelines.md # Pointer → .ai/guidelines.md
|
|
432
|
-
├── .editorconfig #
|
|
433
|
-
├── .gitignore # Pre-
|
|
435
|
+
├── .editorconfig # Formatting (utf-8, lf, spaces)
|
|
436
|
+
├── .gitignore # Pre-configured (AI tokens, .env)
|
|
434
437
|
├── CLAUDE.md # Claude Code entry point
|
|
435
438
|
└── commit-instructions.md # Commit conventions + branch naming
|
|
436
439
|
```
|
|
437
440
|
|
|
438
|
-
> **Mirror**: `.ai/instructions/`, `.ai/prompts
|
|
441
|
+
> **Mirror**: `.ai/instructions/`, `.ai/prompts/`, and `.ai/skills/` are automatically copied to `.github/` if GitHub Copilot is selected.
|
|
439
442
|
|
|
440
443
|
---
|
|
441
444
|
|
|
442
|
-
##
|
|
445
|
+
## Package development
|
|
443
446
|
|
|
444
|
-
###
|
|
447
|
+
### Adding a new pack
|
|
445
448
|
|
|
446
|
-
1.
|
|
447
|
-
2.
|
|
449
|
+
1. Create `templates/packs/pack-name/`
|
|
450
|
+
2. Add `pack.json`:
|
|
448
451
|
```json
|
|
449
452
|
{
|
|
450
|
-
"name": "
|
|
451
|
-
"description": "
|
|
453
|
+
"name": "Pack Name",
|
|
454
|
+
"description": "What it contains",
|
|
452
455
|
"default": false,
|
|
453
456
|
"placeholders": {
|
|
454
457
|
"MY_PLACEHOLDER": {
|
|
455
|
-
"question": "
|
|
456
|
-
"
|
|
458
|
+
"question": "Question displayed to user (Polish)",
|
|
459
|
+
"question_en": "Question displayed to user (English)",
|
|
460
|
+
"default": "default value"
|
|
457
461
|
}
|
|
458
462
|
}
|
|
459
463
|
}
|
|
460
464
|
```
|
|
461
|
-
3.
|
|
462
|
-
4.
|
|
463
|
-
5.
|
|
464
|
-
|
|
465
|
-
###
|
|
466
|
-
|
|
467
|
-
1.
|
|
468
|
-
2.
|
|
469
|
-
3.
|
|
470
|
-
|
|
471
|
-
###
|
|
472
|
-
|
|
473
|
-
| Placeholder |
|
|
474
|
-
|
|
475
|
-
| `{{PROJECT_NAME}}` |
|
|
476
|
-
| `{{PROJECT_DESCRIPTION}}` |
|
|
477
|
-
| `{{TECH_STACK}}` | Tech stack (
|
|
478
|
-
| `{{CI_COMMAND}}` |
|
|
479
|
-
| `{{MODULE_PATH}}` |
|
|
480
|
-
| `{{COMPONENT_LIB_PATH}}` |
|
|
481
|
-
| `{{COMPONENT_LIB_IMPORT}}` |
|
|
482
|
-
| `{{API_BASE_URL}}` |
|
|
483
|
-
| `{{TEST_COMMAND}}` |
|
|
484
|
-
| `{{BUILD_COMMAND}}` |
|
|
485
|
-
| `{{LINT_COMMAND}}` |
|
|
486
|
-
| `{{DOCKER_CONTAINER}}` |
|
|
487
|
-
| `{{JIRA_PREFIX}}` |
|
|
488
|
-
| `{{PLAYWRIGHT_DIR}}` |
|
|
489
|
-
| `{{BASE_URL}}` |
|
|
490
|
-
|
|
491
|
-
###
|
|
465
|
+
3. Add instructions in `_ai/instructions/` (with `applyTo` frontmatter)
|
|
466
|
+
4. Add skills in `_ai/skills/`
|
|
467
|
+
5. Optionally add `_guidelines.md` — section appended to guidelines.md
|
|
468
|
+
|
|
469
|
+
### Adding a new skill
|
|
470
|
+
|
|
471
|
+
1. Create `templates/[base|packs/pack]/_ai/skills/name/SKILL.md`
|
|
472
|
+
2. Use the structure: Trigger → Input → Steps → Verification checklist
|
|
473
|
+
3. Use `{{PLACEHOLDER}}` for values replaced during installation
|
|
474
|
+
|
|
475
|
+
### Available placeholders
|
|
476
|
+
|
|
477
|
+
| Placeholder | Description |
|
|
478
|
+
|-------------|-------------|
|
|
479
|
+
| `{{PROJECT_NAME}}` | Project name |
|
|
480
|
+
| `{{PROJECT_DESCRIPTION}}` | Short project description |
|
|
481
|
+
| `{{TECH_STACK}}` | Tech stack (free text) |
|
|
482
|
+
| `{{CI_COMMAND}}` | CI command (all checks) |
|
|
483
|
+
| `{{MODULE_PATH}}` | Modules path |
|
|
484
|
+
| `{{COMPONENT_LIB_PATH}}` | UI components path |
|
|
485
|
+
| `{{COMPONENT_LIB_IMPORT}}` | Components import path |
|
|
486
|
+
| `{{API_BASE_URL}}` | API base URL |
|
|
487
|
+
| `{{TEST_COMMAND}}` | Test command |
|
|
488
|
+
| `{{BUILD_COMMAND}}` | Build command |
|
|
489
|
+
| `{{LINT_COMMAND}}` | Lint command |
|
|
490
|
+
| `{{DOCKER_CONTAINER}}` | Docker container name |
|
|
491
|
+
| `{{JIRA_PREFIX}}` | JIRA task prefix |
|
|
492
|
+
| `{{PLAYWRIGHT_DIR}}` | Playwright directory |
|
|
493
|
+
| `{{BASE_URL}}` | Application base URL |
|
|
494
|
+
|
|
495
|
+
### Templates structure
|
|
492
496
|
|
|
493
497
|
```
|
|
494
498
|
templates/
|
|
495
|
-
├── base/ #
|
|
499
|
+
├── base/ # Shared across all packs
|
|
496
500
|
│ ├── CLAUDE.md
|
|
497
501
|
│ ├── commit-instructions.md
|
|
498
502
|
│ ├── _gitignore # → .gitignore
|
|
499
503
|
│ ├── _editorconfig # → .editorconfig
|
|
500
504
|
│ ├── _ai/ # → .ai/
|
|
501
|
-
│ │ ├── _guidelines_header.md #
|
|
502
|
-
│ │ ├── context/ #
|
|
503
|
-
│ │ ├── prompts/ # codereview, security-review,
|
|
504
|
-
│ │ └── skills/ #
|
|
505
|
+
│ │ ├── _guidelines_header.md # Guidelines header
|
|
506
|
+
│ │ ├── context/ # Project context
|
|
507
|
+
│ │ ├── prompts/ # codereview, security-review, duplicates
|
|
508
|
+
│ │ └── skills/ # 15 base skills (smf-*)
|
|
505
509
|
│ ├── _claude/ # → .claude/ (permissions + deny)
|
|
506
510
|
│ ├── _github/ # → .github/ (copilot pointer + PR template)
|
|
507
511
|
│ ├── _cursor/ # → .cursor/
|
|
508
512
|
│ ├── _gemini/ # → .gemini/
|
|
509
513
|
│ └── _junie/ # → .junie/
|
|
510
514
|
└── packs/
|
|
511
|
-
├── vue3/ # 6 instr. · 3
|
|
515
|
+
├── vue3/ # 6 instr. · 3 skills
|
|
512
516
|
│ ├── pack.json
|
|
513
|
-
│ ├── _guidelines.md #
|
|
517
|
+
│ ├── _guidelines.md # Section appended to guidelines
|
|
514
518
|
│ └── _ai/instructions/
|
|
515
519
|
├── vitest/ # 1 instr.
|
|
516
520
|
├── storybook/ # 1 instr.
|
|
517
|
-
├── laravel/ # 4 instr. · 7
|
|
518
|
-
├── playwright/ # 1 instr. · 3
|
|
521
|
+
├── laravel/ # 4 instr. · 7 skills
|
|
522
|
+
├── playwright/ # 1 instr. · 3 skills
|
|
519
523
|
└── docker/ # 1 instr.
|
|
520
524
|
```
|
|
521
525
|
|
|
522
|
-
>
|
|
523
|
-
>
|
|
526
|
+
> Directories with `_` prefix are converted to `.` during installation.
|
|
527
|
+
> Per-tool directories (`_claude/`, `_github/`, etc.) are only copied if the tool is selected.
|
|
524
528
|
|
|
525
529
|
---
|
|
526
530
|
|
|
527
|
-
##
|
|
531
|
+
## License
|
|
528
532
|
|
|
529
533
|
MIT
|
package/lib/questions.mjs
CHANGED