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.
Files changed (31) hide show
  1. package/dist/index.js +55 -0
  2. package/dist/index.js.map +1 -0
  3. package/dist/templates/next-app/.claude/docs/conventional-commits.md +149 -0
  4. package/dist/templates/next-app/.claude/skills/git-commiter/SKILL.md +411 -0
  5. package/dist/templates/next-app/.claude/skills/translate-pages/SKILL.md +15 -0
  6. package/dist/templates/next-app/.claude/skills/translate-pages/scripts/translate.ts +0 -0
  7. package/dist/templates/next-app/.prettierignore +7 -0
  8. package/dist/templates/next-app/.prettierrc +11 -0
  9. package/dist/templates/next-app/CLAUDE.md +19 -0
  10. package/dist/templates/next-app/eslint.config.mjs +18 -0
  11. package/dist/templates/next-app/global.d.ts +8 -0
  12. package/dist/templates/next-app/luxw.json +12 -0
  13. package/dist/templates/next-app/next.config.ts +9 -0
  14. package/dist/templates/next-app/package.json +35 -0
  15. package/dist/templates/next-app/postcss.config.mjs +7 -0
  16. package/dist/templates/next-app/src/app/[locale]/[...rest]/page.tsx +5 -0
  17. package/dist/templates/next-app/src/app/[locale]/error.tsx +24 -0
  18. package/dist/templates/next-app/src/app/[locale]/layout.tsx +76 -0
  19. package/dist/templates/next-app/src/app/[locale]/locale-not-supported/page.tsx +49 -0
  20. package/dist/templates/next-app/src/app/[locale]/not-found.tsx +23 -0
  21. package/dist/templates/next-app/src/app/[locale]/page.tsx +24 -0
  22. package/dist/templates/next-app/src/app/favicon.ico +0 -0
  23. package/dist/templates/next-app/src/components/theme-hotkey.tsx +28 -0
  24. package/dist/templates/next-app/src/i18n/load-messages.ts +65 -0
  25. package/dist/templates/next-app/src/i18n/navigation.ts +5 -0
  26. package/dist/templates/next-app/src/i18n/request.ts +32 -0
  27. package/dist/templates/next-app/src/i18n/routing.ts +11 -0
  28. package/dist/templates/next-app/src/proxy.ts +55 -0
  29. package/dist/templates/next-app/src/styles/globals.css +88 -0
  30. package/dist/templates/next-app/tsconfig.json +34 -0
  31. 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
+
@@ -0,0 +1,7 @@
1
+ dist/
2
+ node_modules/
3
+ .next/
4
+ .turbo/
5
+ coverage/
6
+ pnpm-lock.yaml
7
+ .pnpm-store/
@@ -0,0 +1,11 @@
1
+ {
2
+ "endOfLine": "lf",
3
+ "semi": false,
4
+ "singleQuote": false,
5
+ "tabWidth": 2,
6
+ "trailingComma": "es5",
7
+ "printWidth": 80,
8
+ "plugins": ["prettier-plugin-tailwindcss"],
9
+ "tailwindStylesheet": "app/globals.css",
10
+ "tailwindFunctions": ["cn", "cva"]
11
+ }
@@ -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,8 @@
1
+ import common from "./src/locales/en/common.json";
2
+ import home from "./src/locales/en/home.json";
3
+
4
+ type Messages = typeof common & typeof home;
5
+
6
+ declare global {
7
+ interface IntlMessages extends Messages {}
8
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "routes": {
3
+ "publicRoutes": ["/"],
4
+ "privateRoutes": []
5
+ },
6
+ "i18n": {
7
+ "defaultLocale": "",
8
+ "locales": [],
9
+ "supportedLocales": [],
10
+ "localeDirectory": "src/locales"
11
+ }
12
+ }
@@ -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);