@mohammadhprp/system-prompt 0.12.2 → 0.12.4
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/framework/commands/README.md +1 -1
- package/framework/commands/review.md +1 -1
- package/framework/mcps/README.md +0 -1
- package/framework/plugins/ponytail/README.md +0 -1
- package/framework/plugins/ponytail/capabilities.md +1 -1
- package/framework/references/standards/api.md +0 -1
- package/framework/references/standards/architecture.md +0 -1
- package/framework/references/standards/database.md +0 -1
- package/framework/references/standards/debugging.md +0 -1
- package/framework/references/standards/documentation.md +0 -1
- package/framework/references/standards/logging.md +0 -1
- package/framework/references/standards/naming.md +0 -1
- package/framework/references/standards/observability.md +0 -1
- package/framework/references/standards/performance.md +0 -1
- package/framework/references/standards/pull-requests.md +0 -1
- package/framework/references/standards/security.md +0 -1
- package/framework/references/standards/testing.md +0 -1
- package/framework/skills/README.md +16 -12
- package/framework/skills/architect/SKILL.md +83 -0
- package/framework/skills/architect/examples.md +5 -0
- package/framework/skills/architect/references/design-red-flags.md +33 -0
- package/framework/skills/architect/references/rationale-template.md +35 -0
- package/framework/skills/architect/references/runner-prompt.md +20 -0
- package/framework/skills/arena/SKILL.md +71 -0
- package/framework/skills/arena/examples.md +5 -0
- package/framework/skills/bro/SKILL.md +7 -0
- package/framework/skills/bro/examples.md +5 -0
- package/framework/skills/changelog/SKILL.md +41 -0
- package/framework/skills/changelog/examples.md +5 -0
- package/framework/skills/commit/SKILL.md +28 -0
- package/framework/skills/commit/examples.md +5 -0
- package/framework/skills/how/SKILL.md +135 -0
- package/framework/skills/how/examples.md +5 -0
- package/framework/skills/how/references/critic-prompt.md +59 -0
- package/framework/skills/how/references/critique-rubric.md +58 -0
- package/framework/skills/how/references/explainer-prompt.md +55 -0
- package/framework/skills/how/references/explorer-prompt.md +52 -0
- package/framework/skills/improve/SKILL.md +1 -3
- package/framework/skills/improve/examples.md +1 -1
- package/framework/skills/laravel-best-practices/SKILL.md +56 -216
- package/framework/skills/laravel-best-practices/references/architecture.md +1 -1
- package/framework/skills/laravel-best-practices/references/checklist.md +139 -0
- package/framework/skills/laravel-best-practices/references/eloquent.md +4 -2
- package/framework/skills/laravel-best-practices/references/infer-conventions.md +97 -0
- package/framework/skills/laravel-best-practices/references/pest-testing.md +47 -18
- package/framework/skills/laravel-best-practices/references/security.md +1 -1
- package/framework/skills/laravel-best-practices/references/style.md +1 -1
- package/framework/skills/laravel-best-practices/references/tailwindcss.md +0 -1
- package/framework/skills/merge-request/SKILL.md +40 -0
- package/framework/skills/merge-request/examples.md +5 -0
- package/framework/skills/pull-request/SKILL.md +31 -0
- package/framework/skills/pull-request/examples.md +5 -0
- package/framework/skills/release/SKILL.md +30 -0
- package/framework/skills/release/examples.md +5 -0
- package/framework/skills/review/SKILL.md +18 -0
- package/framework/skills/review/examples.md +5 -0
- package/framework/skills/tdd/SKILL.md +44 -0
- package/framework/skills/tdd/examples.md +5 -0
- package/framework/skills/unslop/SKILL.md +81 -0
- package/framework/skills/unslop/examples.md +5 -0
- package/framework/skills/why/SKILL.md +230 -0
- package/framework/skills/why/examples.md +5 -0
- package/framework/skills/why/references/epistemics.md +144 -0
- package/framework/skills/why/references/investigator-prompt.md +103 -0
- package/framework/skills/why/references/source-playbook.md +17 -0
- package/framework/skills/why/references/sources/code-archaeology.md +88 -0
- package/framework/skills/why/references/sources/databricks.md +70 -0
- package/framework/skills/why/references/sources/datadog.md +99 -0
- package/framework/skills/why/references/sources/incident-postmortem.md +15 -0
- package/framework/skills/why/references/sources/linear.md +48 -0
- package/framework/skills/why/references/sources/notion.md +55 -0
- package/framework/skills/why/references/sources/sentry.md +100 -0
- package/framework/skills/why/references/sources/slack.md +54 -0
- package/framework/skills/why/references/synthesizer-prompt.md +135 -0
- package/package.json +1 -1
- package/src/catalog.js +13 -12
- package/framework/mcps/notion-mcp/README.md +0 -57
- package/framework/mcps/notion-mcp/capabilities.md +0 -118
- package/framework/mcps/notion-mcp/configs/opencode.json +0 -9
- package/framework/mcps/notion-mcp/install.md +0 -70
- package/framework/mcps/notion-mcp/troubleshooting.md +0 -95
- package/framework/skills/brainstorming/SKILL.md +0 -159
- package/framework/skills/brainstorming/examples.md +0 -49
- package/framework/skills/brainstorming/scripts/frame-template.html +0 -213
- package/framework/skills/brainstorming/scripts/helper.js +0 -167
- package/framework/skills/brainstorming/scripts/server.cjs +0 -723
- package/framework/skills/brainstorming/scripts/start-server.sh +0 -209
- package/framework/skills/brainstorming/scripts/stop-server.sh +0 -120
- package/framework/skills/brainstorming/visual-companion.md +0 -291
- package/framework/skills/code-review/SKILL.md +0 -72
- package/framework/skills/code-review/examples.md +0 -31
- package/framework/skills/codenavi/SKILL.md +0 -306
- package/framework/skills/codenavi/examples.md +0 -33
- package/framework/skills/codenavi/references/coding-principles.md +0 -143
- package/framework/skills/codenavi/references/notebook-spec.md +0 -171
- package/framework/skills/create-adr/SKILL.md +0 -429
- package/framework/skills/create-adr/examples.md +0 -35
- package/framework/skills/design/SKILL.md +0 -399
- package/framework/skills/design/examples.md +0 -34
- package/framework/skills/great-interface/SKILL.md +0 -43
- package/framework/skills/great-interface/references/animations.md +0 -205
- package/framework/skills/great-interface/references/better-accessibility.md +0 -106
- package/framework/skills/great-interface/references/better-colors.md +0 -100
- package/framework/skills/great-interface/references/better-interface.md +0 -132
- package/framework/skills/great-interface/references/better-layout.md +0 -76
- package/framework/skills/great-interface/references/better-typography.md +0 -157
- package/framework/skills/great-interface/references/better-ui.md +0 -107
- package/framework/skills/great-interface/references/better-writing.md +0 -109
- package/framework/skills/great-interface/references/choosing-fonts.md +0 -64
- package/framework/skills/great-interface/references/color-formats.md +0 -90
- package/framework/skills/great-interface/references/color-usage.md +0 -118
- package/framework/skills/great-interface/references/contrast.md +0 -79
- package/framework/skills/great-interface/references/css-cheat-sheet.md +0 -65
- package/framework/skills/great-interface/references/details-and-accessibility.md +0 -119
- package/framework/skills/great-interface/references/enter-exit.md +0 -147
- package/framework/skills/great-interface/references/explain-interface.md +0 -126
- package/framework/skills/great-interface/references/find-the-effect.md +0 -94
- package/framework/skills/great-interface/references/focus-and-keyboard.md +0 -131
- package/framework/skills/great-interface/references/forms.md +0 -84
- package/framework/skills/great-interface/references/from-an-image.md +0 -55
- package/framework/skills/great-interface/references/grouping-and-alignment.md +0 -123
- package/framework/skills/great-interface/references/hit-areas.md +0 -94
- package/framework/skills/great-interface/references/icon-transitions.md +0 -102
- package/framework/skills/great-interface/references/icons.md +0 -110
- package/framework/skills/great-interface/references/interface-review.md +0 -148
- package/framework/skills/great-interface/references/motion-and-zoom.md +0 -79
- package/framework/skills/great-interface/references/no-browser.md +0 -73
- package/framework/skills/great-interface/references/palette-generation.md +0 -104
- package/framework/skills/great-interface/references/palette-structure.md +0 -76
- package/framework/skills/great-interface/references/performance.md +0 -88
- package/framework/skills/great-interface/references/picker.md +0 -76
- package/framework/skills/great-interface/references/read-the-system.md +0 -178
- package/framework/skills/great-interface/references/removed-signals.md +0 -38
- package/framework/skills/great-interface/references/review-format.md +0 -46
- package/framework/skills/great-interface/references/scope-resolution.md +0 -88
- package/framework/skills/great-interface/references/screen-readers.md +0 -101
- package/framework/skills/great-interface/references/semantics-and-aria.md +0 -84
- package/framework/skills/great-interface/references/spacing-and-adaptivity.md +0 -159
- package/framework/skills/great-interface/references/spacing-and-sizing.md +0 -121
- package/framework/skills/great-interface/references/surfaces.md +0 -219
- package/framework/skills/great-interface/references/token-naming.md +0 -97
- package/framework/skills/great-interface/references/variable-fonts-and-opentype.md +0 -105
- package/framework/skills/great-interface/references/variant.md +0 -104
- package/framework/skills/great-interface/references/wrapping-and-punctuation.md +0 -55
- package/framework/skills/learning-opportunities/SKILL.md +0 -140
- package/framework/skills/learning-opportunities/examples.md +0 -34
- package/framework/skills/learning-opportunities/references/PRINCIPLES.md +0 -42
- package/framework/skills/notion-mcp/SKILL.md +0 -57
- package/framework/skills/notion-mcp/examples.md +0 -31
- package/framework/skills/notion-mcp/references/comments.md +0 -112
- package/framework/skills/notion-mcp/references/databases.md +0 -193
- package/framework/skills/notion-mcp/references/pages.md +0 -235
- package/framework/skills/spec-driven-eval/SKILL.md +0 -341
- package/framework/skills/spec-driven-eval/examples.md +0 -35
- package/framework/skills/spec-driven-eval/references/quickstart.md +0 -118
- package/framework/skills/spec-driven-eval/references/reference.md +0 -295
- package/framework/skills/technical-design-doc-creator/README.md +0 -411
- package/framework/skills/technical-design-doc-creator/SKILL.md +0 -1484
- package/framework/skills/technical-design-doc-creator/examples.md +0 -35
- package/framework/skills/web-design-guidelines/SKILL.md +0 -65
- package/framework/skills/web-design-guidelines/examples.md +0 -32
- package/framework/skills/web-design-guidelines/references/guideline.md +0 -174
|
@@ -1,16 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
name: pest-testing
|
|
3
|
-
description: "Use this skill for Pest PHP testing in Laravel projects only. Trigger whenever any test is being written, edited, fixed, or refactored — including fixing tests that broke after a code change, adding assertions, converting PHPUnit to Pest, adding datasets, and TDD workflows. Always activate when the user asks how to write something in Pest, mentions test files or directories (tests/Feature, tests/Unit, tests/Browser), or needs browser testing, smoke testing multiple pages for JS errors, or architecture tests. Covers: test()/it()/expect() syntax, datasets, mocking, browser testing (visit/click/fill), smoke testing, arch(), Livewire component tests, RefreshDatabase, and all Pest 4 features. Do not use for factories, seeders, migrations, controllers, models, or non-test PHP code."
|
|
4
|
-
license: MIT
|
|
5
|
-
metadata:
|
|
6
|
-
author: laravel
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Pest Testing 4
|
|
1
|
+
# Pest Testing 5
|
|
10
2
|
|
|
11
3
|
## Documentation
|
|
12
4
|
|
|
13
|
-
Use `search-docs` for detailed Pest
|
|
5
|
+
Use `search-docs` for detailed Pest 5 patterns and documentation.
|
|
14
6
|
|
|
15
7
|
## Basic Usage
|
|
16
8
|
|
|
@@ -46,6 +38,7 @@ it('is true', function () {
|
|
|
46
38
|
- Run minimal tests with filter before finalizing: `php artisan test --compact --filter=testName`.
|
|
47
39
|
- Run all tests: `php artisan test --compact`.
|
|
48
40
|
- Run file: `php artisan test --compact tests/Feature/ExampleTest.php`.
|
|
41
|
+
- Run only tests affected by recent changes (Tia): `./vendor/bin/pest --parallel --tia`.
|
|
49
42
|
|
|
50
43
|
## Assertions
|
|
51
44
|
|
|
@@ -82,16 +75,58 @@ it('has emails', function (string $email) {
|
|
|
82
75
|
]);
|
|
83
76
|
```
|
|
84
77
|
|
|
85
|
-
## Pest
|
|
78
|
+
## Pest 5 Features
|
|
86
79
|
|
|
87
80
|
| Feature | Purpose |
|
|
88
81
|
|---------|---------|
|
|
82
|
+
| Tia (Test Impact Analysis) | Rerun only tests affected by recent changes |
|
|
83
|
+
| Time-Balanced Sharding | Split tests across CI shards by execution time |
|
|
84
|
+
| New Validation Expectations | `toBeEmail()`, `toBeUlid()`, `toBeIpAddress()`, and more |
|
|
89
85
|
| Browser Testing | Full integration tests in real browsers |
|
|
90
86
|
| Smoke Testing | Validate multiple pages quickly |
|
|
91
87
|
| Visual Regression | Compare screenshots for visual changes |
|
|
92
|
-
| Test Sharding | Parallel CI runs |
|
|
93
88
|
| Architecture Testing | Enforce code conventions |
|
|
94
89
|
|
|
90
|
+
### Tia (Test Impact Analysis)
|
|
91
|
+
|
|
92
|
+
Tia reruns only tests affected by recent changes and replays cached results for the rest, dramatically reducing suite duration:
|
|
93
|
+
|
|
94
|
+
<!-- Tia Example -->
|
|
95
|
+
```shell
|
|
96
|
+
./vendor/bin/pest --parallel --tia
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
- Replayed tests are not skipped — cached tests store everything they produced, including covered lines and branches.
|
|
100
|
+
- Detects Laravel, Symfony, Livewire, and Inertia automatically.
|
|
101
|
+
|
|
102
|
+
### New Validation Expectations
|
|
103
|
+
|
|
104
|
+
Pest 5 ships eight new validation matchers, all supporting `.not` negation:
|
|
105
|
+
|
|
106
|
+
<!-- Pest 5 Validation Expectations -->
|
|
107
|
+
```php
|
|
108
|
+
expect('nuno@pestphp.com')->toBeEmail();
|
|
109
|
+
expect('01ARZ3NDEKTSV4RRFFQ69G5FAV')->toBeUlid();
|
|
110
|
+
expect('192.168.1.1')->toBeIpAddress();
|
|
111
|
+
expect('00:1a:2b:3c:4d:5e')->toBeMacAddress();
|
|
112
|
+
expect('example.com')->toBeHostname();
|
|
113
|
+
expect('example.co.uk')->toBeDomain();
|
|
114
|
+
expect('Zm9vYmFy')->toBeBase64();
|
|
115
|
+
expect('deadbeef')->toBeHexadecimal();
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Time-Balanced Sharding
|
|
119
|
+
|
|
120
|
+
Distribute tests across CI shards by execution time rather than count:
|
|
121
|
+
|
|
122
|
+
<!-- Pest Sharding Example -->
|
|
123
|
+
```shell
|
|
124
|
+
./vendor/bin/pest --update-shards
|
|
125
|
+
./vendor/bin/pest --shard=1/4
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Commit `tests/.pest/shards.json` to the repository so CI shards stay consistent.
|
|
129
|
+
|
|
95
130
|
### Browser Test Example
|
|
96
131
|
|
|
97
132
|
Browser tests run in real browsers for full integration testing:
|
|
@@ -140,14 +175,8 @@ $pages->assertNoJavaScriptErrors()->assertNoConsoleLogs();
|
|
|
140
175
|
|
|
141
176
|
Capture and compare screenshots to detect visual changes.
|
|
142
177
|
|
|
143
|
-
### Test Sharding
|
|
144
|
-
|
|
145
|
-
Split tests across parallel processes for faster CI runs.
|
|
146
|
-
|
|
147
178
|
### Architecture Testing
|
|
148
179
|
|
|
149
|
-
Pest 4 includes architecture testing (from Pest 3):
|
|
150
|
-
|
|
151
180
|
<!-- Architecture Test Example -->
|
|
152
181
|
```php
|
|
153
182
|
arch('controllers')
|
|
@@ -90,7 +90,7 @@ Correct:
|
|
|
90
90
|
|
|
91
91
|
## CSRF Protection
|
|
92
92
|
|
|
93
|
-
Include `@csrf` in all POST/PUT/DELETE Blade forms.
|
|
93
|
+
Include `@csrf` in all POST/PUT/DELETE Blade forms. Inertia doesn't use `@csrf`; its HTTP client sends the `XSRF-TOKEN` cookie back as the `X-XSRF-TOKEN` header, which Laravel accepts in place of the `_token` field.
|
|
94
94
|
|
|
95
95
|
Incorrect:
|
|
96
96
|
```blade
|
|
@@ -44,7 +44,7 @@ Strings — use `Str` and fluent `Str::of()` over raw PHP:
|
|
|
44
44
|
// Incorrect
|
|
45
45
|
$slug = strtolower(str_replace(' ', '-', $title));
|
|
46
46
|
$short = substr($text, 0, 100) . '...';
|
|
47
|
-
$class = substr(strrchr('App\Models\User', '
|
|
47
|
+
$class = substr(strrchr('App\Models\User', '\\'), 1);
|
|
48
48
|
|
|
49
49
|
// Correct
|
|
50
50
|
$slug = Str::slug($title);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: merge-request
|
|
3
|
+
description: Create a GitLab merge request (MR) for the current branch using the glab CLI. Use this skill whenever the user asks to open, create, update, or prepare a GitLab MR or merge request.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `merge-request` skill instructions
|
|
7
|
+
|
|
8
|
+
Create a merge request for the current branch.
|
|
9
|
+
|
|
10
|
+
## Process
|
|
11
|
+
|
|
12
|
+
1. **Collect information**
|
|
13
|
+
- Get the current branch name: `git branch --show-current`
|
|
14
|
+
- Read the MR template from `.gitlab/merge_request_templates/default.md` if it exists.
|
|
15
|
+
|
|
16
|
+
2. **Format MR title**
|
|
17
|
+
- Take the branch name, replace all `-` with spaces, and capitalize the first character.
|
|
18
|
+
|
|
19
|
+
3. **Collect commits and build summary**
|
|
20
|
+
- List commits on the branch that are not on `develop`: `git log develop..HEAD --oneline`
|
|
21
|
+
- Read each commit message and convert it to a bullet list summarizing user-facing changes.
|
|
22
|
+
- Merge/squash related commits (for example, multiple commits for the same change).
|
|
23
|
+
- Keep the summary concise, with one bullet per logical change.
|
|
24
|
+
|
|
25
|
+
4. **Fill template**
|
|
26
|
+
- Set Summary to the bullet list from step 3.
|
|
27
|
+
- Keep the Checklist section as-is.
|
|
28
|
+
|
|
29
|
+
5. **Present plan and confirm** - Show the source branch, target branch (`develop`), title, and filled description. Ask: "Shall I create this MR?" Push the changes if the user says yes.
|
|
30
|
+
|
|
31
|
+
6. **Create upon confirmation** - Use `glab mr create` with:
|
|
32
|
+
- `--source-branch`: Current branch
|
|
33
|
+
- `--target-branch`: `develop`
|
|
34
|
+
- `--title`: Prepend `Draft: ` to the formatted branch name
|
|
35
|
+
- `--description`: Filled template content
|
|
36
|
+
- `--assignee`: `1`
|
|
37
|
+
- `--squash`
|
|
38
|
+
- `--remove-source-branch`
|
|
39
|
+
|
|
40
|
+
7. **Show the resulting URL.**
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Examples
|
|
2
|
+
|
|
3
|
+
- Read the GitLab MR template and current branch history before drafting the request.
|
|
4
|
+
- Summarize related commits into concise user-facing bullets while leaving the checklist unchanged.
|
|
5
|
+
- Display the complete MR plan and wait for approval before pushing or invoking `glab mr create`.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pull-request
|
|
3
|
+
description: Create or update a GitHub pull request (PR) for the current branch using the gh CLI. Use this skill whenever the user asks to open, create, update, or prepare a GitHub PR or pull request.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `pull-request` skill instructions
|
|
7
|
+
|
|
8
|
+
Create or update a pull request for the current branch using `gh` CLI.
|
|
9
|
+
|
|
10
|
+
## Process
|
|
11
|
+
|
|
12
|
+
1. **Collect information**
|
|
13
|
+
- Get the current branch name: `git branch --show-current`
|
|
14
|
+
- Read the PR template from `.github/pull_request_template.md` if it exists.
|
|
15
|
+
|
|
16
|
+
2. **Format PR title**
|
|
17
|
+
- Take the branch name, replace all `-` with spaces, and capitalize the first character.
|
|
18
|
+
|
|
19
|
+
3. **Collect commits and build summary**
|
|
20
|
+
- List commits on the branch that are not on `develop`: `git log develop..HEAD --oneline`
|
|
21
|
+
- Read each commit message and convert it to a bullet list summarizing user-facing changes.
|
|
22
|
+
- Merge/squash related commits (for example, multiple commits for the same change).
|
|
23
|
+
- Keep the summary concise, with one bullet per logical change.
|
|
24
|
+
|
|
25
|
+
4. **Fill template**
|
|
26
|
+
- Set Summary to the bullet list from step 3.
|
|
27
|
+
- Keep the Checklist section as-is.
|
|
28
|
+
|
|
29
|
+
5. **Present plan and confirm** - Show the source branch, target branch (`develop`), title, and filled description. Ask: "Shall I create this PR?" Push the changes if the user says yes.
|
|
30
|
+
|
|
31
|
+
6. **Create upon confirmation** - Use `gh pr create --title "<title>" --body "<body>" --base <target>` and show the resulting URL.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Examples
|
|
2
|
+
|
|
3
|
+
- Build a PR title and concise summary from the current branch and commits, then show the complete body before asking for confirmation.
|
|
4
|
+
- Preserve an existing `.github/pull_request_template.md` checklist while replacing only its summary content.
|
|
5
|
+
- Push and create the GitHub PR only after the user approves the displayed plan.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: release
|
|
3
|
+
description: Create a software release by reviewing commits, determining the semantic version, updating the changelog and package versions, committing release metadata, and tagging the result. Use this skill whenever the user asks to cut, prepare, publish, or tag a release.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `release` skill instructions
|
|
7
|
+
|
|
8
|
+
Create a release from the current branch state.
|
|
9
|
+
|
|
10
|
+
## Process
|
|
11
|
+
|
|
12
|
+
1. **Review recent commits** - Run `git fetch --tags`, `git describe --tags --abbrev=0` to find the latest tag. Run `git log <latest-tag>..HEAD --oneline --format="%s"` to collect all conventional commits since the last release. Read any existing `CHANGELOG.md`.
|
|
13
|
+
2. **Categorize commits** - Group commits by conventional commit type:
|
|
14
|
+
- `feat!:` or `BREAKING CHANGE:` → breaking change
|
|
15
|
+
- `feat:` → minor feature
|
|
16
|
+
- `fix:` → patch fix
|
|
17
|
+
- `perf:`, `refactor:`, `test:` → patch (if no features)
|
|
18
|
+
- `chore:`, `docs:`, `ci:` → filtered from changelog
|
|
19
|
+
3. **Determine next version** - Based on the [`commit` skill](../commit/SKILL.md) semver convention:
|
|
20
|
+
- Breaking changes → increment major version (e.g., `1.2.3` → `2.0.0`)
|
|
21
|
+
- New features → increment minor version (e.g., `1.2.3` → `1.3.0`)
|
|
22
|
+
- Only fixes/refactors → increment patch version (e.g., `1.2.3` → `1.2.4`)
|
|
23
|
+
- If no previous tag exists, propose `0.1.0`
|
|
24
|
+
4. **Present release plan** - Show the current version, new version, categorized changelog entries, and ask: "Shall I create this release (tag vX.Y.Z and update CHANGELOG.md)?"
|
|
25
|
+
5. **Execute on confirmation**:
|
|
26
|
+
- Update `CHANGELOG.md`: create a new `## [vX.Y.Z]` section under `## Unreleased`, move categorized entries (excluding chore/docs/ci) into it, add the release date, and keep the `## Unreleased` section empty for future work.
|
|
27
|
+
- Update project version metadata such as `package.json` and `package-lock.json` when present.
|
|
28
|
+
- Run `git add CHANGELOG.md package.json package-lock.json` for files that exist and commit with `chore: release vX.Y.Z`.
|
|
29
|
+
- Run `git tag -a vX.Y.Z -m "vX.Y.Z"`.
|
|
30
|
+
6. **Verify** - Run `git log --oneline -n 3` and `git tag --list --sort=-v:refname -n5` to confirm the release tag and commit are in place.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Examples
|
|
2
|
+
|
|
3
|
+
- Inspect tags and conventional commits, propose the next semantic version, and show the release plan before changing files.
|
|
4
|
+
- Move categorized entries from `Unreleased` into a dated version section while leaving a clean `Unreleased` section.
|
|
5
|
+
- Update available package version metadata, commit the release files, create the annotated tag, and verify both afterward.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review
|
|
3
|
+
description: Perform a comprehensive code quality review of changes. Use this skill whenever the user asks to review code, inspect a diff, find bugs, assess production readiness, or perform a code review.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `review` skill instructions
|
|
7
|
+
|
|
8
|
+
Perform comprehensive code quality review.
|
|
9
|
+
|
|
10
|
+
## Process
|
|
11
|
+
|
|
12
|
+
1. **Review conversation and diff** - Read conversation history, run `git diff` for staged/unstaged changes, identify the problem being solved and the behavior being modified. Read related standards: [`references/standards/naming.md`](../../references/standards/naming.md), [`references/standards/testing.md`](../../references/standards/testing.md), [`references/standards/security.md`](../../references/standards/security.md), [`references/standards/performance.md`](../../references/standards/performance.md).
|
|
13
|
+
2. **Check correctness** - Edge cases, concurrency, error handling, state transitions, and backward compatibility. Read contracts and interfaces before implementation.
|
|
14
|
+
3. **Check maintainability** - Naming reflects business meaning, structure matches project conventions, and comments explain why rather than what.
|
|
15
|
+
4. **Check testing** - Do tests prove the behavior change? Identify missing edge cases or failure paths. Tests should verify behavior, not mirror implementation.
|
|
16
|
+
5. **Check performance** - Look for N+1 queries, unbounded loops, unnecessary allocations, and caching opportunities.
|
|
17
|
+
6. **Check security** - Check input validation, authentication enforcement, secrets exposure, and least privilege.
|
|
18
|
+
7. **Present findings** - Distinguish blockers from suggestions, explain the reasoning for each, and summarize overall risk and production readiness.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Examples
|
|
2
|
+
|
|
3
|
+
- Review the staged and unstaged diff, then report findings ordered by severity with file and line references.
|
|
4
|
+
- Check correctness, tests, performance, security, and maintainability rather than only formatting.
|
|
5
|
+
- End with an overall risk and production-readiness summary.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tdd
|
|
3
|
+
description: "Use only when the user explicitly asks for TDD, a failing test, or a regression test, OR when the bug has an obvious cheap local test target. Skip when the test path is unclear, expensive, integration-heavy, or not requested."
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# TDD Bug Fix
|
|
8
|
+
|
|
9
|
+
When fixing a bug with a clear, cheap test path, make the broken behavior executable before changing production code. The goal is a focused regression test that fails before the fix and passes after it.
|
|
10
|
+
|
|
11
|
+
Do not force a test when it would be impractical. If the available test would require broad harness setup, brittle mocks, slow end-to-end infrastructure, production-only state, vague reproduction steps, or large unrelated fixture churn, skip adding a new test and use the closest useful verification instead.
|
|
12
|
+
|
|
13
|
+
## Workflow
|
|
14
|
+
|
|
15
|
+
1. **Understand the bug.** Identify the intended behavior, current behavior, affected path, and smallest observable reproduction.
|
|
16
|
+
2. **Choose the narrowest executable check.** Prefer the closest unit, component, integration, or regression test already used for that codepath. If no practical test path is obvious, do not create one from scratch just to satisfy the workflow.
|
|
17
|
+
3. **Write the failing test first.** Add the smallest focused test that would have caught the bug. The test should encode intended behavior, not mirror the current implementation.
|
|
18
|
+
4. **Run the new test before fixing.** Confirm it fails for the intended reason. If it passes or fails for an unrelated reason, correct the test or reproduction before editing the implementation.
|
|
19
|
+
5. **Fix the bug.** Make the smallest production change that satisfies the intended behavior while preserving nearby contracts.
|
|
20
|
+
6. **Rerun the regression test.** Confirm the test now passes.
|
|
21
|
+
7. **Run nearby validation.** Run relevant adjacent tests, type checks, lint, or scenario checks when the change has broader risk.
|
|
22
|
+
|
|
23
|
+
## If a Failing Test Is Impractical
|
|
24
|
+
|
|
25
|
+
Do not silently skip the regression step. Before fixing, explicitly explain why a failing test is impossible or not worth the cost, then choose the closest executable regression check available. Examples include a targeted script, manual reproduction command, browser automation, snapshot comparison, log assertion, or focused integration check.
|
|
26
|
+
|
|
27
|
+
Prefer no new test over a bad test. A bad test is one that mostly tests mocks, encodes current implementation details, depends on timing or unrelated global state, needs expensive infrastructure for a small fix, or would be deleted immediately after proving the fix.
|
|
28
|
+
|
|
29
|
+
## Guardrails
|
|
30
|
+
|
|
31
|
+
- Do not change tests merely to match a wrong implementation.
|
|
32
|
+
- Do not weaken existing assertions unless the expected behavior has genuinely changed and the reason is clear.
|
|
33
|
+
- Keep the regression test focused on the bug; avoid broad fixture churn or unrelated coverage expansion.
|
|
34
|
+
- Do not add tests when the practical signal is weak; use manual or scripted verification and say why.
|
|
35
|
+
- If the bug is flaky, make the test deterministic where possible and document the signal being locked down.
|
|
36
|
+
- If the bug exposes a broader class of failures, first land the focused regression path, then consider additional sibling coverage.
|
|
37
|
+
|
|
38
|
+
## Final Response
|
|
39
|
+
|
|
40
|
+
Report the evidence, not just the outcome:
|
|
41
|
+
|
|
42
|
+
- Name the failing-before test or executable check and the failure it produced.
|
|
43
|
+
- Name the passing-after test run and any nearby validation performed.
|
|
44
|
+
- If failing-before evidence could not be demonstrated, state why and describe the closest regression check used instead.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Examples
|
|
2
|
+
|
|
3
|
+
- Reproduce a bug with a focused failing regression test before changing the implementation.
|
|
4
|
+
- Use the narrowest practical test path, then run the regression test and relevant nearby validation after the fix.
|
|
5
|
+
- Explain why a failing test is impractical and use the closest reliable executable check instead.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: unslop
|
|
3
|
+
description: Cut AI tells from any writing. Must always apply.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Unslop
|
|
8
|
+
|
|
9
|
+
Edit text to remove AI patterns and add human voice.
|
|
10
|
+
|
|
11
|
+
## Process
|
|
12
|
+
|
|
13
|
+
1. Scan for the patterns below.
|
|
14
|
+
2. Rewrite. Preserve meaning, match intended tone.
|
|
15
|
+
3. Add soul (see next section).
|
|
16
|
+
4. Self-audit: "What makes this obviously AI generated?" Fix remaining tells.
|
|
17
|
+
|
|
18
|
+
## Adding soul
|
|
19
|
+
|
|
20
|
+
Removing patterns is half the job. Sterile, voiceless writing is just as obvious.
|
|
21
|
+
|
|
22
|
+
- **Have opinions.** React to facts instead of neutrally listing pros and cons.
|
|
23
|
+
- **Vary rhythm.** Short sentences. Then longer ones that take their time. Mix it up.
|
|
24
|
+
- **Acknowledge complexity.** "Impressive but also kind of unsettling" beats "impressive."
|
|
25
|
+
- **Use "I" when it fits.** First person isn't unprofessional.
|
|
26
|
+
- **Let some mess in.** Perfect structure looks machine-made.
|
|
27
|
+
- **Be specific.** Not "this is concerning" but "there's something unsettling about agents churning away at 3am."
|
|
28
|
+
|
|
29
|
+
## Patterns to detect and fix
|
|
30
|
+
|
|
31
|
+
### Content
|
|
32
|
+
|
|
33
|
+
1. **Puffery.** "pivotal moment", "testament to", "evolving landscape", "setting the stage for", "indelible mark", "deeply rooted". Cut puffery, state what happened.
|
|
34
|
+
2. **Name-dropping.** Listing media outlets without context. Pick one, say what was said.
|
|
35
|
+
3. **Superficial -ing phrases.** "highlighting...", "ensuring...", "reflecting...", "showcasing...", "fostering...". Delete or expand with real sources.
|
|
36
|
+
4. **Promotional language.** "nestled", "vibrant", "breathtaking", "groundbreaking", "renowned", "stunning", "must-visit". Use neutral descriptions.
|
|
37
|
+
5. **Vague attributions.** "Experts believe", "Industry reports suggest", "Some critics argue". Name the source or delete.
|
|
38
|
+
6. **Formulaic challenges.** "Despite challenges... continues to thrive." Replace with specific facts.
|
|
39
|
+
|
|
40
|
+
### Language
|
|
41
|
+
|
|
42
|
+
7. **AI vocabulary.** Additionally, crucial, delve, enduring, enhance, fostering, garner, interplay, intricate, landscape (abstract), pivotal, showcase, tapestry (abstract), testament, underscore, vibrant. Replace with plain words.
|
|
43
|
+
8. **Fancy ways to say "is".** "serves as", "stands as", "boasts", "features". Just say "is" or "has".
|
|
44
|
+
9. **"Not just X, but Y."** State the point directly instead.
|
|
45
|
+
10. **Rule of three.** Forcing ideas into groups of three. Use the natural number.
|
|
46
|
+
11. **Synonym cycling.** Protagonist, main character, central figure, hero all in one paragraph. Pick one, repeat it.
|
|
47
|
+
12. **False ranges.** "from X to Y" where X and Y aren't on a meaningful scale. List topics directly.
|
|
48
|
+
|
|
49
|
+
### Style
|
|
50
|
+
|
|
51
|
+
13. **Em dash overuse.** Avoid em dashes entirely. Use periods or commas only (no parentheses, no en dashes, no hyphen-as-dash substitutes). Em dashes are an AI tell, and reaching for parentheses instead just trades one tell for another. If a thought needs separation, end the sentence or use a comma.
|
|
52
|
+
14. **Colon overuse.** Colons are fine before a list or example. Not as mid-sentence connectors. "If you're coming from traditional automation: instead of registering event handlers, you describe conditions" adds nothing with the colon. Rewrite to let the point stand on its own without comparison framing. "Describing when the scheduler should fire works best as plain English." Same meaning, no crutch punctuation.
|
|
53
|
+
15. **Boldface overuse.** Don't bold every proper noun or acronym.
|
|
54
|
+
16. **Inline-header lists.** The tell is a bold label and colon that restates the line: "**Performance:** Performance improved...". Convert those to prose. A bold lead-in that ends in a period, names the item, and is followed by genuinely new detail ("**Schema in TypeScript.** Tables live in one file.") is fine, not a tell.
|
|
55
|
+
17. **Title case headings.** Use sentence case.
|
|
56
|
+
18. **Decorative emojis.** Remove from headings and bullets.
|
|
57
|
+
19. **Curly quotes.** Replace with straight quotes.
|
|
58
|
+
|
|
59
|
+
### Communication artifacts
|
|
60
|
+
|
|
61
|
+
20. **Chatbot phrases.** "I hope this helps!", "Let me know if...", "Of course!", "Certainly!", "Found the smoking gun!" Remove.
|
|
62
|
+
21. **Cutoff disclaimers.** "While specific details are limited..." Find sources or remove.
|
|
63
|
+
22. **Sycophantic tone.** "Great question! You're absolutely right!" Respond directly.
|
|
64
|
+
|
|
65
|
+
### Filler
|
|
66
|
+
|
|
67
|
+
23. **Filler phrases.** "In order to" becomes "To". "Due to the fact that" becomes "Because". "It is important to note that" gets deleted.
|
|
68
|
+
24. **Excessive hedging.** "could potentially possibly be argued that it might" becomes "may".
|
|
69
|
+
25. **Generic conclusions.** "The future looks bright." State specific plans or facts.
|
|
70
|
+
|
|
71
|
+
### Jargon
|
|
72
|
+
|
|
73
|
+
26. **Abstract metaphor nouns.** Substrate, wedge, vector, locus, vantage, nexus, primitive (as noun), harness (as metaphor), surface (as in "API surface"), bedrock, scaffolding (as metaphor), modality, paradigm, gold-plating, ratchet (as metaphor), evacuate (for moving code), endgame, north star, flywheel. These read as technical but usually have a plainer concrete word. "Substrate" becomes "base". "Wedge in" becomes "add". "Vector" becomes "way" or "method". "Gold-plating" becomes "more than the job needs". "Ratchet" becomes the mechanism's real name or "a limit that only tightens". "Evacuate" becomes "move out". "Endgame" becomes "the last phase". Pick the concrete word.
|
|
74
|
+
|
|
75
|
+
### Plain speech
|
|
76
|
+
|
|
77
|
+
27. **Say what it does, not how it feels.** "the database stays close at hand", "SQL you can read", "types that follow your schema" name a feeling. The fix names the mechanism or a number: "`.toSQL()` returns the exact string sent to the database", "a column rename fails the build". Ask what the sentence tells the reader to do or know, then write that. If you can't restate it as a concrete instruction, fact, or number, cut it. One more check: if the sentence could appear unchanged in another project's docs, it says nothing about this one. Cut it.
|
|
78
|
+
28. **Shorten or split dense sentences.** If the reader has to backtrack to parse a sentence, break it in two or drop clauses. One idea per sentence.
|
|
79
|
+
29. **Active voice.** Prefer it. Catch "is/are/was/were + past participle" and name the actor: "queries are validated" becomes "the compiler validates queries", "the file is parsed by the loader" becomes "the loader parses the file". Passive is fine only when the actor is unknown or genuinely doesn't matter.
|
|
80
|
+
30. **Cut adverbs, or use a stronger verb.** "runs quickly" becomes "is fast" or the number. "significantly improves" becomes the measured delta. An adverb propping up a weak verb means the verb is wrong.
|
|
81
|
+
31. **Prefer the plain word.** "utilize" becomes "use", "leverage" becomes "use", "facilitate" becomes "help", "numerous" becomes "many", "in the event that" becomes "if". The fancier synonym is rarely clearer.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Examples
|
|
2
|
+
|
|
3
|
+
- Rewrite release notes to remove inflated claims, filler, and generic AI phrasing while preserving meaning.
|
|
4
|
+
- Edit technical prose for plain language, varied rhythm, active voice, and a natural human tone.
|
|
5
|
+
- Scan a document for em-dash overuse, formulaic transitions, vague claims, and unnecessary jargon before rewriting it.
|