sleeke 1.0.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/dist/index.js +55 -0
- package/dist/index.js.map +1 -0
- package/dist/templates/next-app/.claude/docs/conventional-commits.md +149 -0
- package/dist/templates/next-app/.claude/skills/git-commiter/SKILL.md +411 -0
- package/dist/templates/next-app/.claude/skills/translate-pages/SKILL.md +15 -0
- package/dist/templates/next-app/.claude/skills/translate-pages/scripts/translate.ts +0 -0
- package/dist/templates/next-app/.prettierignore +7 -0
- package/dist/templates/next-app/.prettierrc +11 -0
- package/dist/templates/next-app/CLAUDE.md +19 -0
- package/dist/templates/next-app/eslint.config.mjs +18 -0
- package/dist/templates/next-app/global.d.ts +8 -0
- package/dist/templates/next-app/luxw.json +12 -0
- package/dist/templates/next-app/next.config.ts +9 -0
- package/dist/templates/next-app/package.json +35 -0
- package/dist/templates/next-app/postcss.config.mjs +7 -0
- package/dist/templates/next-app/src/app/[locale]/[...rest]/page.tsx +5 -0
- package/dist/templates/next-app/src/app/[locale]/error.tsx +24 -0
- package/dist/templates/next-app/src/app/[locale]/layout.tsx +76 -0
- package/dist/templates/next-app/src/app/[locale]/locale-not-supported/page.tsx +49 -0
- package/dist/templates/next-app/src/app/[locale]/not-found.tsx +23 -0
- package/dist/templates/next-app/src/app/[locale]/page.tsx +24 -0
- package/dist/templates/next-app/src/app/favicon.ico +0 -0
- package/dist/templates/next-app/src/components/theme-hotkey.tsx +28 -0
- package/dist/templates/next-app/src/i18n/load-messages.ts +65 -0
- package/dist/templates/next-app/src/i18n/navigation.ts +5 -0
- package/dist/templates/next-app/src/i18n/request.ts +32 -0
- package/dist/templates/next-app/src/i18n/routing.ts +11 -0
- package/dist/templates/next-app/src/proxy.ts +55 -0
- package/dist/templates/next-app/src/styles/globals.css +88 -0
- package/dist/templates/next-app/tsconfig.json +34 -0
- package/package.json +68 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Conventional Commits 1.0.0 (Official Spec)
|
|
2
|
+
|
|
3
|
+
> Source: https://www.conventionalcommits.org/en/v1.0.0/
|
|
4
|
+
> Saved locally so the skill can reference the full spec without needing network access.
|
|
5
|
+
|
|
6
|
+
## Summary
|
|
7
|
+
|
|
8
|
+
The Conventional Commits specification is a lightweight convention on top of
|
|
9
|
+
commit messages. It provides an easy set of rules for creating an explicit
|
|
10
|
+
commit history, making it easier to write automated tools on top of it. This
|
|
11
|
+
convention dovetails with SemVer by describing the features, fixes, and
|
|
12
|
+
breaking changes made in commit messages.
|
|
13
|
+
|
|
14
|
+
The commit message should be structured as follows:
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
<type>[optional scope]: <description>
|
|
18
|
+
|
|
19
|
+
[optional body]
|
|
20
|
+
|
|
21
|
+
[optional footer(s)]
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Structural elements, to communicate intent to consumers of your library:
|
|
25
|
+
|
|
26
|
+
- `fix:` a commit of the type `fix` patches a bug in your codebase
|
|
27
|
+
(correlates with **PATCH** in Semantic Versioning).
|
|
28
|
+
- `feat:` a commit of the type `feat` introduces a new feature to the
|
|
29
|
+
codebase (correlates with **MINOR** in Semantic Versioning).
|
|
30
|
+
- `BREAKING CHANGE:` a commit that has a footer `BREAKING CHANGE:`, or
|
|
31
|
+
appends a `!` after the type/scope, introduces a breaking API change
|
|
32
|
+
(correlates with **MAJOR** in Semantic Versioning). A BREAKING CHANGE can
|
|
33
|
+
be part of commits of any type.
|
|
34
|
+
- Types other than `fix:` and `feat:` are allowed, e.g.
|
|
35
|
+
`@commitlint/config-conventional` (based on the Angular convention)
|
|
36
|
+
recommends `build:`, `chore:`, `ci:`, `docs:`, `style:`, `refactor:`,
|
|
37
|
+
`perf:`, `test:`, and others.
|
|
38
|
+
- Footers other than `BREAKING CHANGE: <description>` may be provided and
|
|
39
|
+
follow a convention similar to git trailer format.
|
|
40
|
+
|
|
41
|
+
A scope MAY be provided to a commit's type to give additional contextual
|
|
42
|
+
information, contained within parenthesis, e.g.
|
|
43
|
+
`feat(parser): add ability to parse arrays`.
|
|
44
|
+
|
|
45
|
+
## Examples
|
|
46
|
+
|
|
47
|
+
**Commit message with description and breaking change footer**
|
|
48
|
+
```
|
|
49
|
+
feat: allow provided config object to extend other configs
|
|
50
|
+
|
|
51
|
+
BREAKING CHANGE: `extends` key in config file is now used for extending other config files
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Commit message with `!` to draw attention to breaking change**
|
|
55
|
+
```
|
|
56
|
+
feat!: send an email to the customer when a product is shipped
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Commit message with scope and `!`**
|
|
60
|
+
```
|
|
61
|
+
feat(api)!: send an email to the customer when a product is shipped
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Commit message with both `!` and BREAKING CHANGE footer**
|
|
65
|
+
```
|
|
66
|
+
feat!: drop support for Node 6
|
|
67
|
+
|
|
68
|
+
BREAKING CHANGE: use JavaScript features not available in Node 6.
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Commit message with no body**
|
|
72
|
+
```
|
|
73
|
+
docs: correct spelling of CHANGELOG
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Commit message with scope**
|
|
77
|
+
```
|
|
78
|
+
feat(lang): add Polish language
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Commit message with multi-paragraph body and multiple footers**
|
|
82
|
+
```
|
|
83
|
+
fix: prevent racing of requests
|
|
84
|
+
|
|
85
|
+
Introduce a request id and a reference to latest request. Dismiss
|
|
86
|
+
incoming responses other than from latest request.
|
|
87
|
+
|
|
88
|
+
Remove timeouts which were used to mitigate the racing issue but are
|
|
89
|
+
obsolete now.
|
|
90
|
+
|
|
91
|
+
Reviewed-by: Z
|
|
92
|
+
Refs: #123
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Specification (RFC 2119 keywords apply)
|
|
96
|
+
|
|
97
|
+
1. Commits MUST be prefixed with a type (noun: `feat`, `fix`, etc.),
|
|
98
|
+
followed by an OPTIONAL scope, OPTIONAL `!`, and REQUIRED terminal
|
|
99
|
+
colon and space.
|
|
100
|
+
2. The type `feat` MUST be used when a commit adds a new feature.
|
|
101
|
+
3. The type `fix` MUST be used when a commit represents a bug fix.
|
|
102
|
+
4. A scope MAY be provided after a type, as a noun in parenthesis, e.g.
|
|
103
|
+
`fix(parser):`.
|
|
104
|
+
5. A description MUST immediately follow the colon and space after the
|
|
105
|
+
type/scope prefix, e.g.
|
|
106
|
+
`fix: array parsing issue when multiple spaces were contained in string`.
|
|
107
|
+
6. A longer commit body MAY be provided, one blank line after the
|
|
108
|
+
description, giving additional context.
|
|
109
|
+
7. The body is free-form and MAY consist of multiple newline-separated
|
|
110
|
+
paragraphs.
|
|
111
|
+
8. One or more footers MAY be provided, one blank line after the body.
|
|
112
|
+
Each footer MUST consist of a word token, followed by `: ` or ` #`,
|
|
113
|
+
followed by a string value (inspired by git trailer convention).
|
|
114
|
+
9. A footer token MUST use `-` in place of whitespace (e.g. `Acked-by`),
|
|
115
|
+
except for `BREAKING CHANGE`.
|
|
116
|
+
10. Breaking changes MUST be indicated either in the type/scope prefix
|
|
117
|
+
(`!`) or as a footer entry.
|
|
118
|
+
11. If in the footer, it MUST be the uppercase text `BREAKING CHANGE:`
|
|
119
|
+
followed by a description.
|
|
120
|
+
12. If indicated via `!`, `BREAKING CHANGE:` in the footer MAY be omitted,
|
|
121
|
+
and the description SHALL describe the breaking change.
|
|
122
|
+
13. Types other than `feat`/`fix` MAY be used, e.g. `docs: update ref docs`.
|
|
123
|
+
14. Units of information MUST NOT be treated as case-sensitive, except
|
|
124
|
+
`BREAKING CHANGE`, which MUST be uppercase.
|
|
125
|
+
15. `BREAKING-CHANGE` MUST be synonymous with `BREAKING CHANGE` as a
|
|
126
|
+
footer token.
|
|
127
|
+
|
|
128
|
+
## Why use Conventional Commits
|
|
129
|
+
|
|
130
|
+
- Automatically generating CHANGELOGs.
|
|
131
|
+
- Automatically determining a semantic version bump.
|
|
132
|
+
- Communicating the nature of changes to teammates and stakeholders.
|
|
133
|
+
- Triggering build and publish processes.
|
|
134
|
+
- Making it easier for people to contribute, via a structured history.
|
|
135
|
+
|
|
136
|
+
## FAQ (selected)
|
|
137
|
+
|
|
138
|
+
- **Revert commits:** the spec doesn't define exact revert behavior. A
|
|
139
|
+
common convention: use the `revert` type with a footer referencing the
|
|
140
|
+
reverted commit SHAs, e.g.
|
|
141
|
+
```
|
|
142
|
+
revert: let us never again speak of the noodle incident
|
|
143
|
+
|
|
144
|
+
Refs: 676104e, a215868
|
|
145
|
+
```
|
|
146
|
+
- **Multiple unrelated changes in one commit:** split into multiple commits
|
|
147
|
+
whenever possible — that's part of the value of the convention.
|
|
148
|
+
- **Wrong type used:** fix via `git rebase -i` before merge/release; after
|
|
149
|
+
release it depends on your tooling.
|
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: git-commiter
|
|
3
|
+
description: Expert Git committer. Reviews code diffs for explicitly targeted files/paths (never the whole repo blindly), updates the changelog, generates high-quality Conventional Commit messages, and performs git commit and git push.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are a Git commit expert. When asked to commit changes, follow these steps EXACTLY.
|
|
7
|
+
|
|
8
|
+
## 0. Reference: Conventional Commits Spec
|
|
9
|
+
|
|
10
|
+
Before generating commit messages, consult `.claude/docs/conventional-commits.md`
|
|
11
|
+
— it's the full official Conventional Commits 1.0.0 specification
|
|
12
|
+
(https://www.conventionalcommits.org/en/v1.0.0/), saved locally for offline
|
|
13
|
+
reference.
|
|
14
|
+
|
|
15
|
+
- For **standard commits** (feat/fix/docs/etc. with a simple description),
|
|
16
|
+
you already know the format below — no need to open the reference file.
|
|
17
|
+
- **Open and read `.claude/docs/conventional-commits.md` whenever** the
|
|
18
|
+
change involves any of the following, since these are easy to get wrong
|
|
19
|
+
without checking the exact spec rules:
|
|
20
|
+
- A **breaking change** (needs `!` after type/scope and/or a
|
|
21
|
+
`BREAKING CHANGE:` footer — see spec rules 10–12, 15).
|
|
22
|
+
- A **scope** (`feat(parser): ...`) and you're unsure whether it fits the
|
|
23
|
+
changed area of the codebase.
|
|
24
|
+
- **Footers** (e.g. `Refs:`, `Reviewed-by:`, `Closes:`) — see spec rule 8–9
|
|
25
|
+
for correct token/separator format.
|
|
26
|
+
- A **revert** commit — see the FAQ section for the recommended pattern.
|
|
27
|
+
- Any doubt about which type applies, or a change that doesn't cleanly
|
|
28
|
+
fit `feat`/`fix`.
|
|
29
|
+
|
|
30
|
+
## 1. Determine Changelog File
|
|
31
|
+
|
|
32
|
+
Always use today's date in `YYMMDD` format and create or update:
|
|
33
|
+
|
|
34
|
+
`.claude/changes/YYMMDD.md`
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 2. Determine Target Files (REQUIRED — never commit blindly)
|
|
39
|
+
|
|
40
|
+
This skill NEVER stages the whole repository automatically (no blind
|
|
41
|
+
`git add .`). You must know exactly which files/paths to commit before
|
|
42
|
+
doing anything else.
|
|
43
|
+
|
|
44
|
+
- If the user's request already specifies files, paths, or a scope (e.g.
|
|
45
|
+
"commit the changes in `src/auth/`", "commit `Button.tsx` and
|
|
46
|
+
`Button.test.tsx`"), use exactly that as the target list.
|
|
47
|
+
- If the user just says something generic like "commit" or "commita isso"
|
|
48
|
+
with no files specified, run `git status` first to see what's modified,
|
|
49
|
+
then **ask the user which of those files/paths they want to commit**
|
|
50
|
+
before staging anything. Do not assume "all of them."
|
|
51
|
+
- Never use a bare `git add .` or `git add -A` unless the user explicitly
|
|
52
|
+
says to commit everything / all changes.
|
|
53
|
+
|
|
54
|
+
### Splitting targets into separate commits (default behavior)
|
|
55
|
+
|
|
56
|
+
When multiple target files/paths are given, do NOT bundle them into a
|
|
57
|
+
single commit by default — that produces commit messages describing
|
|
58
|
+
unrelated changes lumped together, which pollutes the history.
|
|
59
|
+
|
|
60
|
+
- **Default: one commit per target file**, each with its own scoped
|
|
61
|
+
`git diff`, its own Conventional Commit message, and its own changelog
|
|
62
|
+
entry.
|
|
63
|
+
- **Exception — group into a single commit only when either:**
|
|
64
|
+
- The user explicitly says the files belong together (e.g. "commit
|
|
65
|
+
`Button.tsx` and `Button.test.tsx` together, same change"), or
|
|
66
|
+
- The diffs make it unambiguous they're the same atomic change (e.g. a
|
|
67
|
+
component file and its matching test/snapshot file that were clearly
|
|
68
|
+
edited for the same reason, or a rename that touches an import in
|
|
69
|
+
another file). If there's any doubt, default to separate commits
|
|
70
|
+
instead of guessing.
|
|
71
|
+
- When grouping, state explicitly why the files were grouped (one
|
|
72
|
+
sentence) before showing the combined commit message, so the user can
|
|
73
|
+
correct it if wrong.
|
|
74
|
+
- Process each commit (or group) sequentially: diff → changelog entry →
|
|
75
|
+
commit message → stage → commit, then move to the next target/group.
|
|
76
|
+
Push once at the end after all commits are made (not after every single
|
|
77
|
+
one), unless the user asks to push after each.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 3. Analyze Changes
|
|
82
|
+
|
|
83
|
+
Once the targets are confirmed, inspect the repository state by running:
|
|
84
|
+
|
|
85
|
+
- `git status` to confirm the current state of the target files.
|
|
86
|
+
- `git diff -- <target files>` to review unstaged changes scoped only to
|
|
87
|
+
the targets (not the whole repo).
|
|
88
|
+
- `git log -3 --oneline` to understand the recent commit style.
|
|
89
|
+
|
|
90
|
+
Use this information to produce an accurate changelog and commit message
|
|
91
|
+
— scoped only to the targeted files.
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 4. Update Changelog
|
|
96
|
+
|
|
97
|
+
Document today's changes in the changelog.
|
|
98
|
+
|
|
99
|
+
- **Location:** `.claude/changes/YYMMDD.md`
|
|
100
|
+
- Always use today's date.
|
|
101
|
+
- If the file already exists, **append** the new entry.
|
|
102
|
+
- **Never overwrite or remove** existing content.
|
|
103
|
+
|
|
104
|
+
Include:
|
|
105
|
+
|
|
106
|
+
- Summary of changes
|
|
107
|
+
- Modified files
|
|
108
|
+
- Features added, improved or removed
|
|
109
|
+
- Database schema changes (if any)
|
|
110
|
+
|
|
111
|
+
Example:
|
|
112
|
+
|
|
113
|
+
```markdown
|
|
114
|
+
# 250130 Update
|
|
115
|
+
|
|
116
|
+
## Changes Summary
|
|
117
|
+
|
|
118
|
+
- Improved user comment display by showing post titles instead of UUIDs.
|
|
119
|
+
|
|
120
|
+
## Major File Changes
|
|
121
|
+
|
|
122
|
+
- `CommentEntity.java`: Added `postTitle` field.
|
|
123
|
+
- `PostRepositoryImpl.java`: Fetch post titles when loading comments.
|
|
124
|
+
- `UserCommentsTab.tsx`: Display post titles.
|
|
125
|
+
|
|
126
|
+
## Feature Changes
|
|
127
|
+
|
|
128
|
+
- [Added] Post title support in comment list.
|
|
129
|
+
- [Improved] Better readability for users.
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## 5. Generate Commit Message
|
|
135
|
+
|
|
136
|
+
Generate a commit message using the following format, per the Conventional
|
|
137
|
+
Commits spec (`.claude/docs/conventional-commits.md`):
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
<type>[optional scope][!]: <description>
|
|
141
|
+
|
|
142
|
+
[optional body]
|
|
143
|
+
|
|
144
|
+
[optional footer(s)]
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Commit Title
|
|
148
|
+
|
|
149
|
+
The first line must:
|
|
150
|
+
|
|
151
|
+
- Be written in English.
|
|
152
|
+
- Be around **50 characters** (maximum **72**).
|
|
153
|
+
- Follow the **Conventional Commits** specification.
|
|
154
|
+
- Start with exactly one commit type:
|
|
155
|
+
- `feat:`
|
|
156
|
+
- `fix:`
|
|
157
|
+
- `docs:`
|
|
158
|
+
- `style:`
|
|
159
|
+
- `refactor:`
|
|
160
|
+
- `perf:`
|
|
161
|
+
- `test:`
|
|
162
|
+
- `chore:`
|
|
163
|
+
- `build:`
|
|
164
|
+
- `revert:`
|
|
165
|
+
- Optionally include a **scope** in parenthesis right after the type,
|
|
166
|
+
when the change is clearly localized to one area of the codebase,
|
|
167
|
+
e.g. `feat(parser): add ability to parse arrays`.
|
|
168
|
+
- Optionally append **`!`** immediately before the colon when the commit
|
|
169
|
+
introduces a breaking change, e.g. `feat(api)!: change response shape`.
|
|
170
|
+
When `!` is used, either add a `BREAKING CHANGE:` footer with details, or
|
|
171
|
+
make sure the description itself clearly explains the break.
|
|
172
|
+
- Clearly summarize the overall change.
|
|
173
|
+
- Never include dates or numeric prefixes.
|
|
174
|
+
|
|
175
|
+
After the title, insert one blank line.
|
|
176
|
+
|
|
177
|
+
### Commit Body
|
|
178
|
+
|
|
179
|
+
The body should:
|
|
180
|
+
|
|
181
|
+
- Explain **what** changed.
|
|
182
|
+
- Explain **why** the change was made when appropriate.
|
|
183
|
+
- Use concise bullet points.
|
|
184
|
+
- **Do not repeat Conventional Commit prefixes.**
|
|
185
|
+
|
|
186
|
+
### Commit Footer(s) (when applicable)
|
|
187
|
+
|
|
188
|
+
- One blank line after the body.
|
|
189
|
+
- Format: `Token: value` or `Token #value` (token uses `-` instead of
|
|
190
|
+
spaces, e.g. `Reviewed-by`, `Refs`).
|
|
191
|
+
- Use `BREAKING CHANGE: <description>` (must be uppercase) for breaking
|
|
192
|
+
changes not already covered by `!` in the title.
|
|
193
|
+
|
|
194
|
+
Example:
|
|
195
|
+
|
|
196
|
+
```text
|
|
197
|
+
refactor: Improve comment display with post titles
|
|
198
|
+
|
|
199
|
+
* Add postTitle property to CommentEntity.
|
|
200
|
+
* Load post titles in PostRepositoryImpl.
|
|
201
|
+
* Display post titles in UserCommentsTab.
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
### GOOD Examples
|
|
207
|
+
|
|
208
|
+
```text
|
|
209
|
+
refactor: Modernize iteration utilities
|
|
210
|
+
|
|
211
|
+
* Replace legacy loops with intrange.
|
|
212
|
+
* Remove deprecated iteration helpers.
|
|
213
|
+
* Improve code readability.
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
```text
|
|
217
|
+
feat: Add mobile navigation drawer
|
|
218
|
+
|
|
219
|
+
* Introduce responsive navigation component.
|
|
220
|
+
* Support gesture-based closing.
|
|
221
|
+
* Improve accessibility.
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
```text
|
|
225
|
+
fix: Resolve login redirect loop
|
|
226
|
+
|
|
227
|
+
* Prevent duplicate redirect execution.
|
|
228
|
+
* Handle expired session state correctly.
|
|
229
|
+
* Improve error handling.
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
```text
|
|
233
|
+
docs: Update authentication guide
|
|
234
|
+
|
|
235
|
+
* Document OAuth login flow.
|
|
236
|
+
* Add API authentication examples.
|
|
237
|
+
* Clarify environment configuration.
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
```text
|
|
241
|
+
feat(api)!: change pagination response shape
|
|
242
|
+
|
|
243
|
+
* Replace offset-based pagination with cursor-based.
|
|
244
|
+
* Update client SDK to consume new shape.
|
|
245
|
+
|
|
246
|
+
BREAKING CHANGE: `page`/`limit` query params are removed in favor of `cursor`.
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
### BAD Examples
|
|
252
|
+
|
|
253
|
+
```text
|
|
254
|
+
250818 Improve login
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
Reason:
|
|
258
|
+
|
|
259
|
+
- Commit titles must never contain date prefixes.
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
```text
|
|
264
|
+
Update stuff
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
Reason:
|
|
268
|
+
|
|
269
|
+
- Missing Conventional Commit type.
|
|
270
|
+
- Too vague.
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
```text
|
|
275
|
+
Misc changes
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
Reason:
|
|
279
|
+
|
|
280
|
+
- Missing Conventional Commit type.
|
|
281
|
+
- Not descriptive.
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
```text
|
|
286
|
+
refactor Improve authentication
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
Reason:
|
|
290
|
+
|
|
291
|
+
- Missing the colon after the Conventional Commit type.
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
```text
|
|
296
|
+
feat: Add new feature
|
|
297
|
+
|
|
298
|
+
* feat: Add endpoint.
|
|
299
|
+
* feat: Update UI.
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
Reason:
|
|
303
|
+
|
|
304
|
+
- Conventional Commit prefixes belong only in the title, not in the body.
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
```text
|
|
309
|
+
feat: change response format entirely
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
Reason:
|
|
313
|
+
|
|
314
|
+
- This is a breaking change but has no `!` and no `BREAKING CHANGE:`
|
|
315
|
+
footer — consumers won't know it breaks compatibility.
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## 6. Show Generated Commit Message
|
|
320
|
+
|
|
321
|
+
Display the complete commit message exactly as it will be committed.
|
|
322
|
+
|
|
323
|
+
Example:
|
|
324
|
+
|
|
325
|
+
```text
|
|
326
|
+
refactor: Modernize iteration utilities
|
|
327
|
+
|
|
328
|
+
* Replace legacy loops with intrange.
|
|
329
|
+
* Remove deprecated iteration helpers.
|
|
330
|
+
* Improve overall readability.
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## 7. Execute Git Commands
|
|
336
|
+
|
|
337
|
+
For each commit (or explicitly grouped set of files, per Step 2), repeat
|
|
338
|
+
steps 1–4 below. Only after ALL commits are done, run step 5 (push) once.
|
|
339
|
+
|
|
340
|
+
1. Update the changelog file in `.claude/changes/` with this commit's entry
|
|
341
|
+
(append, don't overwrite).
|
|
342
|
+
2. Stage ONLY this commit's target file(s) — never the whole repo unless
|
|
343
|
+
the user explicitly asked for everything:
|
|
344
|
+
|
|
345
|
+
```bash
|
|
346
|
+
git add <target-file(s)-for-this-commit>
|
|
347
|
+
git add .claude/changes/YYMMDD.md
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
Only use `git add .` / `git add -A` if the user explicitly requested
|
|
351
|
+
committing all changes.
|
|
352
|
+
|
|
353
|
+
3. Commit using heredoc syntax:
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
git commit -m "$(cat <<'EOF'
|
|
357
|
+
...
|
|
358
|
+
EOF
|
|
359
|
+
)"
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
4. Verify the commit:
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
git status
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
Repeat 1–4 for the next target/group, if any.
|
|
369
|
+
|
|
370
|
+
5. Once every target has its own commit, push all of them together:
|
|
371
|
+
|
|
372
|
+
```bash
|
|
373
|
+
git push
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
6. Report success or failure, listing each commit hash + message that was
|
|
377
|
+
created.
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
381
|
+
## CRITICAL RULES
|
|
382
|
+
|
|
383
|
+
- **Never stage the entire repo blindly.** No bare `git add .` / `git add -A`
|
|
384
|
+
unless the user explicitly asked to commit everything. Always work off an
|
|
385
|
+
explicit target list (files/paths).
|
|
386
|
+
- **Never bundle multiple unrelated targets into one commit by default.**
|
|
387
|
+
One commit per target file unless the user explicitly says two or more
|
|
388
|
+
files are the same change, or the diffs make that unambiguous.
|
|
389
|
+
- If no targets were given and the request is generic ("commit",
|
|
390
|
+
"commita"), stop and ask the user which files/paths to commit — this is
|
|
391
|
+
the one case where clarification is required before proceeding.
|
|
392
|
+
- Always inspect the repository before generating a commit.
|
|
393
|
+
- Always update the changelog file in `.claude/changes/` before committing.
|
|
394
|
+
- Always append to an existing changelog file for that date.
|
|
395
|
+
- Never overwrite or delete previous changelog entries.
|
|
396
|
+
- Always display the complete commit message before executing Git commands.
|
|
397
|
+
- Always use heredoc syntax for multiline commit messages.
|
|
398
|
+
- Once targets are confirmed and the commit message is generated, proceed
|
|
399
|
+
automatically through changelog update, staging, commit, and push
|
|
400
|
+
without further confirmation.
|
|
401
|
+
- Always follow the Conventional Commits specification
|
|
402
|
+
(`.claude/docs/conventional-commits.md`).
|
|
403
|
+
- Never include dates or numeric prefixes in commit titles.
|
|
404
|
+
- Use exactly one Conventional Commit prefix in the commit title.
|
|
405
|
+
- Never repeat Conventional Commit prefixes in the commit body.
|
|
406
|
+
- Use `!` and/or a `BREAKING CHANGE:` footer whenever the change breaks
|
|
407
|
+
backward compatibility — check `.claude/docs/conventional-commits.md` if
|
|
408
|
+
unsure how to phrase it.
|
|
409
|
+
- The commit title should summarize the overall change.
|
|
410
|
+
- The commit body should explain the implementation details without
|
|
411
|
+
repeating the title.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: translate-pages
|
|
3
|
+
description: It's used to bulk translate all pages of the website, from the default language to other languages defined in `luxm.json`.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Translate Pages
|
|
7
|
+
|
|
8
|
+
This skill translates all route pages from the default locale to other locales defined in `luxm.json`.
|
|
9
|
+
|
|
10
|
+
## Workflow
|
|
11
|
+
|
|
12
|
+
1. Read `luxm.json` to identify `defaultLocale` and target `locales`
|
|
13
|
+
2. For each locale (except default), create a cloned directory structure under `src/locales/<locale>/routes/`
|
|
14
|
+
3. Translate all JSON locale files using the AI model
|
|
15
|
+
|
|
File without changes
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Luxw Project
|
|
2
|
+
|
|
3
|
+
This project was generated with [Luxw](https://github.com/araujoio/luxw)
|
|
4
|
+
|
|
5
|
+
## What is Luxw?
|
|
6
|
+
|
|
7
|
+
Luxw is a command-line tool that automates the creation of Next.js projects with support for multiple libraries, eliminating repetitive setup tasks and letting developers focus on what actually matters building the product.
|
|
8
|
+
|
|
9
|
+
Beyond scaffolding, Luxw leverages AI-powered skills and MCPs (Model Context Protocols) under the hood to automate complex workflows like bulk-translating pages, managing routes, and maintaining project consistency. This means less manual config and more productivity, right from your terminal.
|
|
10
|
+
|
|
11
|
+
## Rules
|
|
12
|
+
|
|
13
|
+
- **Consult Specs:** Always consult `.claude/specs/` before suggesting or implementing any changes.
|
|
14
|
+
|
|
15
|
+
- **Mandatory Documentation Check:** Whenever I ask you to implement a new feature, use an external library, framework, or third-party API, you **MUST** use the Context7 MCP server to fetch and read the most up-to-date documentation before writing any code.
|
|
16
|
+
|
|
17
|
+
- **Avoid Hallucinations:** Do not rely solely on your pre-trained knowledge for API surfaces, as they might be deprecated or outdated. Always verify the current usage via Context7 first.
|
|
18
|
+
|
|
19
|
+
- **Available Skills:** Check `.claude/skills/` for available AI-powered skills before starting a task. Each skill has its own `SKILL.md` with full instructions.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { defineConfig, globalIgnores } from "eslint/config";
|
|
2
|
+
import nextVitals from "eslint-config-next/core-web-vitals";
|
|
3
|
+
import nextTs from "eslint-config-next/typescript";
|
|
4
|
+
|
|
5
|
+
const eslintConfig = defineConfig([
|
|
6
|
+
...nextVitals,
|
|
7
|
+
...nextTs,
|
|
8
|
+
// Override default ignores of eslint-config-next.
|
|
9
|
+
globalIgnores([
|
|
10
|
+
// Default ignores of eslint-config-next:
|
|
11
|
+
".next/**",
|
|
12
|
+
"out/**",
|
|
13
|
+
"build/**",
|
|
14
|
+
"next-env.d.ts",
|
|
15
|
+
]),
|
|
16
|
+
]);
|
|
17
|
+
|
|
18
|
+
export default eslintConfig;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { NextConfig } from "next";
|
|
2
|
+
import createNextIntlPlugin from 'next-intl/plugin';
|
|
3
|
+
|
|
4
|
+
const nextConfig: NextConfig = {
|
|
5
|
+
devIndicators: false,
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
const withNextIntl = createNextIntlPlugin('./src/i18n/request.ts');
|
|
9
|
+
export default withNextIntl(nextConfig);
|