cursor-kit-cli 1.1.1 → 1.2.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -0
- package/bin/cursor-new-instance +74 -0
- package/bin/cursor-remove-instance +69 -0
- package/dist/cli.cjs +601 -62
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +601 -62
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +39 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +33 -2
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
- package/templates/commands/docs.md +5 -3
- package/templates/commands/explain.md +5 -3
- package/templates/commands/fix.md +5 -3
- package/templates/commands/implement.md +5 -3
- package/templates/commands/refactor.md +5 -3
- package/templates/commands/review.md +5 -3
- package/templates/commands/test.md +5 -3
- package/templates/manifest.json +11 -8
- package/templates/rules/git.mdc +0 -2
- package/templates/rules/toc.mdc +17 -9
- package/templates/skills/aesthetic/SKILL.md +121 -0
- package/templates/skills/aesthetic/assets/design-guideline-template.md +163 -0
- package/templates/skills/aesthetic/assets/design-story-template.md +135 -0
- package/templates/skills/aesthetic/references/design-principles.md +62 -0
- package/templates/skills/aesthetic/references/design-resources.md +75 -0
- package/templates/skills/aesthetic/references/micro-interactions.md +53 -0
- package/templates/skills/aesthetic/references/storytelling-design.md +50 -0
- package/templates/skills/backend-development/SKILL.mdc +95 -0
- package/templates/skills/backend-development/references/backend-api-design.md +495 -0
- package/templates/skills/backend-development/references/backend-architecture.md +454 -0
- package/templates/skills/backend-development/references/backend-authentication.md +338 -0
- package/templates/skills/backend-development/references/backend-code-quality.md +659 -0
- package/templates/skills/backend-development/references/backend-debugging.md +904 -0
- package/templates/skills/backend-development/references/backend-devops.md +494 -0
- package/templates/skills/backend-development/references/backend-mindset.md +387 -0
- package/templates/skills/backend-development/references/backend-performance.md +397 -0
- package/templates/skills/backend-development/references/backend-security.md +290 -0
- package/templates/skills/backend-development/references/backend-technologies.md +256 -0
- package/templates/skills/backend-development/references/backend-testing.md +429 -0
- package/templates/skills/frontend-design/SKILL.mdc +41 -0
- package/templates/skills/frontend-design/references/animejs.md +396 -0
- package/templates/skills/frontend-development/SKILL.mdc +399 -0
- package/templates/skills/frontend-development/resources/common-patterns.md +331 -0
- package/templates/skills/frontend-development/resources/complete-examples.md +872 -0
- package/templates/skills/frontend-development/resources/component-patterns.md +502 -0
- package/templates/skills/frontend-development/resources/data-fetching.md +767 -0
- package/templates/skills/frontend-development/resources/file-organization.md +502 -0
- package/templates/skills/frontend-development/resources/loading-and-error-states.md +501 -0
- package/templates/skills/frontend-development/resources/performance.md +406 -0
- package/templates/skills/frontend-development/resources/routing-guide.md +364 -0
- package/templates/skills/frontend-development/resources/styling-guide.md +428 -0
- package/templates/skills/frontend-development/resources/typescript-standards.md +418 -0
- package/templates/skills/problem-solving/SKILL.mdc +96 -0
- package/templates/skills/problem-solving/references/attribution.md +69 -0
- package/templates/skills/problem-solving/references/collision-zone-thinking.md +79 -0
- package/templates/skills/problem-solving/references/inversion-exercise.md +91 -0
- package/templates/skills/problem-solving/references/meta-pattern-recognition.md +87 -0
- package/templates/skills/problem-solving/references/scale-game.md +95 -0
- package/templates/skills/problem-solving/references/simplification-cascades.md +80 -0
- package/templates/skills/problem-solving/references/when-stuck.md +72 -0
- package/templates/skills/research/SKILL.mdc +168 -0
- package/templates/skills/sequential-thinking/.env.example +8 -0
- package/templates/skills/sequential-thinking/README.md +183 -0
- package/templates/skills/sequential-thinking/SKILL.mdc +94 -0
- package/templates/skills/sequential-thinking/package.json +31 -0
- package/templates/skills/sequential-thinking/references/advanced-strategies.md +79 -0
- package/templates/skills/sequential-thinking/references/advanced-techniques.md +76 -0
- package/templates/skills/sequential-thinking/references/core-patterns.md +95 -0
- package/templates/skills/sequential-thinking/references/examples-api.md +88 -0
- package/templates/skills/sequential-thinking/references/examples-architecture.md +94 -0
- package/templates/skills/sequential-thinking/references/examples-debug.md +90 -0
- package/templates/skills/sequential-thinking/scripts/format-thought.js +159 -0
- package/templates/skills/sequential-thinking/scripts/process-thought.js +236 -0
- package/templates/skills/sequential-thinking/tests/format-thought.test.js +133 -0
- package/templates/skills/sequential-thinking/tests/process-thought.test.js +215 -0
- package/templates/skills/ui-styling/LICENSE.txt +202 -0
- package/templates/skills/ui-styling/SKILL.mdc +321 -0
- package/templates/skills/ui-styling/references/canvas-design-system.md +320 -0
- package/templates/skills/ui-styling/references/shadcn-accessibility.md +471 -0
- package/templates/skills/ui-styling/references/shadcn-components.md +424 -0
- package/templates/skills/ui-styling/references/shadcn-theming.md +373 -0
- package/templates/skills/ui-styling/references/tailwind-customization.md +483 -0
- package/templates/skills/ui-styling/references/tailwind-responsive.md +382 -0
- package/templates/skills/ui-styling/references/tailwind-utilities.md +455 -0
- package/templates/rules/frontend-design.mdc +0 -48
- package/templates/rules/performance.mdc +0 -54
- package/templates/rules/react.mdc +0 -58
- package/templates/rules/security.mdc +0 -50
- package/templates/rules/testing.mdc +0 -54
- package/templates/rules/typescript.mdc +0 -36
package/dist/index.js
CHANGED
|
@@ -52,7 +52,7 @@ function gradientText(text) {
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
// src/utils/fs.ts
|
|
55
|
-
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, rmSync, statSync } from "fs";
|
|
55
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, rmSync, statSync, cpSync } from "fs";
|
|
56
56
|
import { dirname, join, resolve } from "path";
|
|
57
57
|
function ensureDir(path) {
|
|
58
58
|
if (!existsSync(path)) {
|
|
@@ -77,6 +77,9 @@ function removeFile(path) {
|
|
|
77
77
|
rmSync(path, { recursive: true });
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
|
+
function copyDir(src, dest) {
|
|
81
|
+
cpSync(src, dest, { recursive: true });
|
|
82
|
+
}
|
|
80
83
|
function listFiles(dir, extension) {
|
|
81
84
|
if (!dirExists(dir)) return [];
|
|
82
85
|
const files = readdirSync(dir);
|
|
@@ -85,6 +88,13 @@ function listFiles(dir, extension) {
|
|
|
85
88
|
}
|
|
86
89
|
return files;
|
|
87
90
|
}
|
|
91
|
+
function listDirs(dir) {
|
|
92
|
+
if (!dirExists(dir)) return [];
|
|
93
|
+
return readdirSync(dir).filter((item) => {
|
|
94
|
+
const itemPath = join(dir, item);
|
|
95
|
+
return statSync(itemPath).isDirectory();
|
|
96
|
+
});
|
|
97
|
+
}
|
|
88
98
|
function getCursorDir(cwd = process.cwd()) {
|
|
89
99
|
return join(cwd, ".cursor");
|
|
90
100
|
}
|
|
@@ -94,6 +104,9 @@ function getCommandsDir(cwd = process.cwd()) {
|
|
|
94
104
|
function getRulesDir(cwd = process.cwd()) {
|
|
95
105
|
return join(getCursorDir(cwd), "rules");
|
|
96
106
|
}
|
|
107
|
+
function getSkillsDir(cwd = process.cwd()) {
|
|
108
|
+
return join(getCursorDir(cwd), "skills");
|
|
109
|
+
}
|
|
97
110
|
function resolveFromCwd(...paths) {
|
|
98
111
|
return resolve(process.cwd(), ...paths);
|
|
99
112
|
}
|
|
@@ -110,10 +123,18 @@ function getConflictingFiles(dir, files) {
|
|
|
110
123
|
if (!dirExists(dir)) return [];
|
|
111
124
|
return files.filter((file) => fileExists(join(dir, file)));
|
|
112
125
|
}
|
|
126
|
+
function getConflictingDirs(dir, dirs) {
|
|
127
|
+
if (!dirExists(dir)) return [];
|
|
128
|
+
return dirs.filter((d) => dirExists(join(dir, d)));
|
|
129
|
+
}
|
|
113
130
|
function getNonConflictingFiles(dir, files) {
|
|
114
131
|
if (!dirExists(dir)) return files;
|
|
115
132
|
return files.filter((file) => !fileExists(join(dir, file)));
|
|
116
133
|
}
|
|
134
|
+
function getNonConflictingDirs(dir, dirs) {
|
|
135
|
+
if (!dirExists(dir)) return dirs;
|
|
136
|
+
return dirs.filter((d) => !dirExists(join(dir, d)));
|
|
137
|
+
}
|
|
117
138
|
|
|
118
139
|
// src/utils/constants.ts
|
|
119
140
|
var REPO_URL = "github:duongductrong/cursor-kit";
|
|
@@ -122,12 +143,15 @@ var REPO_RAW_URL = "https://raw.githubusercontent.com/duongductrong/cursor-kit/m
|
|
|
122
143
|
var CURSOR_DIR = ".cursor";
|
|
123
144
|
var COMMANDS_DIR = "commands";
|
|
124
145
|
var RULES_DIR = "rules";
|
|
146
|
+
var SKILLS_DIR = "skills";
|
|
125
147
|
var COMMAND_EXTENSION = ".md";
|
|
126
148
|
var RULE_EXTENSION = ".mdc";
|
|
149
|
+
var SKILL_EXTENSION = ".mdc";
|
|
127
150
|
var CONFIG_FILE = ".cursorkit";
|
|
128
151
|
var TEMPLATE_PATHS = {
|
|
129
152
|
commands: "templates/commands",
|
|
130
|
-
rules: "templates/rules"
|
|
153
|
+
rules: "templates/rules",
|
|
154
|
+
skills: "templates/skills"
|
|
131
155
|
};
|
|
132
156
|
export {
|
|
133
157
|
COMMANDS_DIR,
|
|
@@ -139,20 +163,27 @@ export {
|
|
|
139
163
|
REPO_URL,
|
|
140
164
|
RULES_DIR,
|
|
141
165
|
RULE_EXTENSION,
|
|
166
|
+
SKILLS_DIR,
|
|
167
|
+
SKILL_EXTENSION,
|
|
142
168
|
TEMPLATE_PATHS,
|
|
143
169
|
bold,
|
|
170
|
+
copyDir,
|
|
144
171
|
dim,
|
|
145
172
|
dirExists,
|
|
146
173
|
ensureDir,
|
|
147
174
|
fileExists,
|
|
148
175
|
getCommandsDir,
|
|
176
|
+
getConflictingDirs,
|
|
149
177
|
getConflictingFiles,
|
|
150
178
|
getCursorDir,
|
|
179
|
+
getNonConflictingDirs,
|
|
151
180
|
getNonConflictingFiles,
|
|
152
181
|
getPackageJson,
|
|
153
182
|
getRulesDir,
|
|
183
|
+
getSkillsDir,
|
|
154
184
|
gradientText,
|
|
155
185
|
highlight,
|
|
186
|
+
listDirs,
|
|
156
187
|
listFiles,
|
|
157
188
|
printBanner,
|
|
158
189
|
printDivider,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/branding.ts","../src/utils/fs.ts","../src/utils/constants.ts"],"sourcesContent":["import figlet from \"figlet\";\nimport gradient from \"gradient-string\";\nimport pc from \"picocolors\";\n\nconst cursorGradient = gradient([\"#00DC82\", \"#36E4DA\", \"#0047E1\"]);\n\nexport function printBanner(): void {\n const banner = figlet.textSync(\"Cursor Kit\", {\n font: \"ANSI Shadow\",\n horizontalLayout: \"fitted\",\n });\n\n console.log(cursorGradient.multiline(banner));\n console.log();\n console.log(\n pc.dim(\" \") +\n pc.bold(pc.cyan(\"✦\")) +\n pc.dim(\" Supercharge your Cursor IDE with rules & commands\")\n );\n console.log();\n}\n\nexport function printSuccess(message: string): void {\n console.log(pc.green(\"✓\") + pc.dim(\" \") + message);\n}\n\nexport function printError(message: string): void {\n console.log(pc.red(\"✗\") + pc.dim(\" \") + message);\n}\n\nexport function printInfo(message: string): void {\n console.log(pc.cyan(\"ℹ\") + pc.dim(\" \") + message);\n}\n\nexport function printWarning(message: string): void {\n console.log(pc.yellow(\"⚠\") + pc.dim(\" \") + message);\n}\n\nexport function printDivider(): void {\n console.log(pc.dim(\"─\".repeat(50)));\n}\n\nexport function printVersion(version: string): void {\n console.log(\n pc.dim(\" \") + cursorGradient(`v${version}`) + pc.dim(\" • Made with ♥\")\n );\n console.log();\n}\n\nexport function highlight(text: string): string {\n return pc.cyan(text);\n}\n\nexport function dim(text: string): string {\n return pc.dim(text);\n}\n\nexport function bold(text: string): string {\n return pc.bold(text);\n}\n\nexport function gradientText(text: string): string {\n return cursorGradient(text);\n}\n\n","import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, rmSync, statSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\n\nexport function ensureDir(path: string): void {\n if (!existsSync(path)) {\n mkdirSync(path, { recursive: true });\n }\n}\n\nexport function fileExists(path: string): boolean {\n return existsSync(path);\n}\n\nexport function dirExists(path: string): boolean {\n return existsSync(path) && statSync(path).isDirectory();\n}\n\nexport function readFile(path: string): string {\n return readFileSync(path, \"utf-8\");\n}\n\nexport function writeFile(path: string, content: string): void {\n ensureDir(dirname(path));\n writeFileSync(path, content, \"utf-8\");\n}\n\nexport function removeFile(path: string): void {\n if (existsSync(path)) {\n rmSync(path, { recursive: true });\n }\n}\n\nexport function listFiles(dir: string, extension?: string): string[] {\n if (!dirExists(dir)) return [];\n \n const files = readdirSync(dir);\n if (extension) {\n return files.filter((f) => f.endsWith(extension));\n }\n return files;\n}\n\nexport function getCursorDir(cwd: string = process.cwd()): string {\n return join(cwd, \".cursor\");\n}\n\nexport function getCommandsDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"commands\");\n}\n\nexport function getRulesDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"rules\");\n}\n\nexport function resolveFromCwd(...paths: string[]): string {\n return resolve(process.cwd(), ...paths);\n}\n\nexport function getPackageJson(cwd: string = process.cwd()): Record<string, unknown> | null {\n const pkgPath = join(cwd, \"package.json\");\n if (!fileExists(pkgPath)) return null;\n \n try {\n return JSON.parse(readFile(pkgPath));\n } catch {\n return null;\n }\n}\n\nexport function getConflictingFiles(dir: string, files: string[]): string[] {\n if (!dirExists(dir)) return [];\n return files.filter((file) => fileExists(join(dir, file)));\n}\n\nexport function getNonConflictingFiles(dir: string, files: string[]): string[] {\n if (!dirExists(dir)) return files;\n return files.filter((file) => !fileExists(join(dir, file)));\n}\n\n","export const REPO_URL = \"github:duongductrong/cursor-kit\";\nexport const REPO_REF = \"master\";\nexport const REPO_RAW_URL = \"https://raw.githubusercontent.com/duongductrong/cursor-kit/master\";\n\nexport const CURSOR_DIR = \".cursor\";\nexport const COMMANDS_DIR = \"commands\";\nexport const RULES_DIR = \"rules\";\n\nexport const COMMAND_EXTENSION = \".md\";\nexport const RULE_EXTENSION = \".mdc\";\n\nexport const CONFIG_FILE = \".cursorkit\";\n\nexport const TEMPLATE_PATHS = {\n commands: \"templates/commands\",\n rules: \"templates/rules\",\n} as const;\n
|
|
1
|
+
{"version":3,"sources":["../src/utils/branding.ts","../src/utils/fs.ts","../src/utils/constants.ts"],"sourcesContent":["import figlet from \"figlet\";\nimport gradient from \"gradient-string\";\nimport pc from \"picocolors\";\n\nconst cursorGradient = gradient([\"#00DC82\", \"#36E4DA\", \"#0047E1\"]);\n\nexport function printBanner(): void {\n const banner = figlet.textSync(\"Cursor Kit\", {\n font: \"ANSI Shadow\",\n horizontalLayout: \"fitted\",\n });\n\n console.log(cursorGradient.multiline(banner));\n console.log();\n console.log(\n pc.dim(\" \") +\n pc.bold(pc.cyan(\"✦\")) +\n pc.dim(\" Supercharge your Cursor IDE with rules & commands\")\n );\n console.log();\n}\n\nexport function printSuccess(message: string): void {\n console.log(pc.green(\"✓\") + pc.dim(\" \") + message);\n}\n\nexport function printError(message: string): void {\n console.log(pc.red(\"✗\") + pc.dim(\" \") + message);\n}\n\nexport function printInfo(message: string): void {\n console.log(pc.cyan(\"ℹ\") + pc.dim(\" \") + message);\n}\n\nexport function printWarning(message: string): void {\n console.log(pc.yellow(\"⚠\") + pc.dim(\" \") + message);\n}\n\nexport function printDivider(): void {\n console.log(pc.dim(\"─\".repeat(50)));\n}\n\nexport function printVersion(version: string): void {\n console.log(\n pc.dim(\" \") + cursorGradient(`v${version}`) + pc.dim(\" • Made with ♥\")\n );\n console.log();\n}\n\nexport function highlight(text: string): string {\n return pc.cyan(text);\n}\n\nexport function dim(text: string): string {\n return pc.dim(text);\n}\n\nexport function bold(text: string): string {\n return pc.bold(text);\n}\n\nexport function gradientText(text: string): string {\n return cursorGradient(text);\n}\n\n","import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, rmSync, statSync, cpSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\n\nexport function ensureDir(path: string): void {\n if (!existsSync(path)) {\n mkdirSync(path, { recursive: true });\n }\n}\n\nexport function fileExists(path: string): boolean {\n return existsSync(path);\n}\n\nexport function dirExists(path: string): boolean {\n return existsSync(path) && statSync(path).isDirectory();\n}\n\nexport function readFile(path: string): string {\n return readFileSync(path, \"utf-8\");\n}\n\nexport function writeFile(path: string, content: string): void {\n ensureDir(dirname(path));\n writeFileSync(path, content, \"utf-8\");\n}\n\nexport function removeFile(path: string): void {\n if (existsSync(path)) {\n rmSync(path, { recursive: true });\n }\n}\n\nexport function copyDir(src: string, dest: string): void {\n cpSync(src, dest, { recursive: true });\n}\n\nexport function listFiles(dir: string, extension?: string): string[] {\n if (!dirExists(dir)) return [];\n \n const files = readdirSync(dir);\n if (extension) {\n return files.filter((f) => f.endsWith(extension));\n }\n return files;\n}\n\nexport function listDirs(dir: string): string[] {\n if (!dirExists(dir)) return [];\n \n return readdirSync(dir).filter((item) => {\n const itemPath = join(dir, item);\n return statSync(itemPath).isDirectory();\n });\n}\n\nexport function getCursorDir(cwd: string = process.cwd()): string {\n return join(cwd, \".cursor\");\n}\n\nexport function getCommandsDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"commands\");\n}\n\nexport function getRulesDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"rules\");\n}\n\nexport function getSkillsDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"skills\");\n}\n\nexport function resolveFromCwd(...paths: string[]): string {\n return resolve(process.cwd(), ...paths);\n}\n\nexport function getPackageJson(cwd: string = process.cwd()): Record<string, unknown> | null {\n const pkgPath = join(cwd, \"package.json\");\n if (!fileExists(pkgPath)) return null;\n \n try {\n return JSON.parse(readFile(pkgPath));\n } catch {\n return null;\n }\n}\n\nexport function getConflictingFiles(dir: string, files: string[]): string[] {\n if (!dirExists(dir)) return [];\n return files.filter((file) => fileExists(join(dir, file)));\n}\n\nexport function getConflictingDirs(dir: string, dirs: string[]): string[] {\n if (!dirExists(dir)) return [];\n return dirs.filter((d) => dirExists(join(dir, d)));\n}\n\nexport function getNonConflictingFiles(dir: string, files: string[]): string[] {\n if (!dirExists(dir)) return files;\n return files.filter((file) => !fileExists(join(dir, file)));\n}\n\nexport function getNonConflictingDirs(dir: string, dirs: string[]): string[] {\n if (!dirExists(dir)) return dirs;\n return dirs.filter((d) => !dirExists(join(dir, d)));\n}\n","export const REPO_URL = \"github:duongductrong/cursor-kit\";\nexport const REPO_REF = \"master\";\nexport const REPO_RAW_URL = \"https://raw.githubusercontent.com/duongductrong/cursor-kit/master\";\n\nexport const CURSOR_DIR = \".cursor\";\nexport const COMMANDS_DIR = \"commands\";\nexport const RULES_DIR = \"rules\";\nexport const SKILLS_DIR = \"skills\";\n\nexport const COMMAND_EXTENSION = \".md\";\nexport const RULE_EXTENSION = \".mdc\";\nexport const SKILL_EXTENSION = \".mdc\";\n\nexport const CONFIG_FILE = \".cursorkit\";\n\nexport const TEMPLATE_PATHS = {\n commands: \"templates/commands\",\n rules: \"templates/rules\",\n skills: \"templates/skills\",\n} as const;\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cursor-kit-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0-beta.2",
|
|
4
4
|
"description": "CLI toolkit to manage Cursor IDE rules and commands",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
},
|
|
20
20
|
"files": [
|
|
21
21
|
"dist",
|
|
22
|
-
"templates"
|
|
22
|
+
"templates",
|
|
23
|
+
"bin"
|
|
23
24
|
],
|
|
24
25
|
"keywords": [
|
|
25
26
|
"cursor",
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
Before answering:
|
|
2
|
-
- Use `toc.mdc` to
|
|
3
|
-
-
|
|
4
|
-
-
|
|
2
|
+
- Use `toc.mdc` to identify the most relevant **Skills** and **Rules** for this task.
|
|
3
|
+
- Skills are comprehensive guides (e.g. `frontend-development`, `ui-styling`, `backend-development`).
|
|
4
|
+
- Rules are concise best practices (e.g. `git.mdc`, `coding-style.mdc`).
|
|
5
|
+
- Apply ONLY the selected skills/rules that match the task context.
|
|
6
|
+
- If no skill or rule clearly matches, ignore all and answer normally.
|
|
5
7
|
|
|
6
8
|
## Purpose
|
|
7
9
|
You are a technical writer. Your mission is to create or update documentation that is clear, accurate, and synced with the codebase.
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
Before answering:
|
|
2
|
-
- Use `toc.mdc` to
|
|
3
|
-
-
|
|
4
|
-
-
|
|
2
|
+
- Use `toc.mdc` to identify the most relevant **Skills** and **Rules** for this task.
|
|
3
|
+
- Skills are comprehensive guides (e.g. `frontend-development`, `ui-styling`, `backend-development`).
|
|
4
|
+
- Rules are concise best practices (e.g. `git.mdc`, `coding-style.mdc`).
|
|
5
|
+
- Apply ONLY the selected skills/rules that match the task context.
|
|
6
|
+
- If no skill or rule clearly matches, ignore all and answer normally.
|
|
5
7
|
|
|
6
8
|
You are a patient technical educator. Your job is to explain code or concepts clearly.
|
|
7
9
|
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
Before answering:
|
|
2
|
-
- Use `toc.mdc` to
|
|
3
|
-
-
|
|
4
|
-
-
|
|
2
|
+
- Use `toc.mdc` to identify the most relevant **Skills** and **Rules** for this task.
|
|
3
|
+
- Skills are comprehensive guides (e.g. `frontend-development`, `ui-styling`, `backend-development`).
|
|
4
|
+
- Rules are concise best practices (e.g. `git.mdc`, `coding-style.mdc`).
|
|
5
|
+
- Apply ONLY the selected skills/rules that match the task context.
|
|
6
|
+
- If no skill or rule clearly matches, ignore all and answer normally.
|
|
5
7
|
|
|
6
8
|
## Purpose
|
|
7
9
|
Act as an expert bug fixer. Find the root cause, apply a safe fix, and avoid regressions.
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
Before answering:
|
|
2
|
-
- Use `toc.mdc` to
|
|
3
|
-
-
|
|
4
|
-
-
|
|
2
|
+
- Use `toc.mdc` to identify the most relevant **Skills** and **Rules** for this task.
|
|
3
|
+
- Skills are comprehensive guides (e.g. `frontend-development`, `ui-styling`, `backend-development`).
|
|
4
|
+
- Rules are concise best practices (e.g. `git.mdc`, `coding-style.mdc`).
|
|
5
|
+
- Apply ONLY the selected skills/rules that match the task context.
|
|
6
|
+
- If no skill or rule clearly matches, ignore all and answer normally.
|
|
5
7
|
|
|
6
8
|
## Purpose
|
|
7
9
|
You are a senior software engineer. Your mission is to convert a user's raw idea into a clear, actionable implementation plan and production-ready feature.
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
Before answering:
|
|
2
|
-
- Use `toc.mdc` to
|
|
3
|
-
-
|
|
4
|
-
-
|
|
2
|
+
- Use `toc.mdc` to identify the most relevant **Skills** and **Rules** for this task.
|
|
3
|
+
- Skills are comprehensive guides (e.g. `frontend-development`, `ui-styling`, `backend-development`).
|
|
4
|
+
- Rules are concise best practices (e.g. `git.mdc`, `coding-style.mdc`).
|
|
5
|
+
- Apply ONLY the selected skills/rules that match the task context.
|
|
6
|
+
- If no skill or rule clearly matches, ignore all and answer normally.
|
|
5
7
|
|
|
6
8
|
## Purpose
|
|
7
9
|
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
Before answering:
|
|
2
|
-
- Use `toc.mdc` to
|
|
3
|
-
-
|
|
4
|
-
-
|
|
2
|
+
- Use `toc.mdc` to identify the most relevant **Skills** and **Rules** for this task.
|
|
3
|
+
- Skills are comprehensive guides (e.g. `frontend-development`, `ui-styling`, `backend-development`).
|
|
4
|
+
- Rules are concise best practices (e.g. `git.mdc`, `coding-style.mdc`).
|
|
5
|
+
- Apply ONLY the selected skills/rules that match the task context.
|
|
6
|
+
- If no skill or rule clearly matches, ignore all and answer normally.
|
|
5
7
|
|
|
6
8
|
You are a senior code reviewer performing a thorough code review.
|
|
7
9
|
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
Before answering:
|
|
2
|
-
- Use `toc.mdc` to
|
|
3
|
-
-
|
|
4
|
-
-
|
|
2
|
+
- Use `toc.mdc` to identify the most relevant **Skills** and **Rules** for this task.
|
|
3
|
+
- Skills are comprehensive guides (e.g. `frontend-development`, `ui-styling`, `backend-development`).
|
|
4
|
+
- Rules are concise best practices (e.g. `git.mdc`, `coding-style.mdc`).
|
|
5
|
+
- Apply ONLY the selected skills/rules that match the task context.
|
|
6
|
+
- If no skill or rule clearly matches, ignore all and answer normally.
|
|
5
7
|
|
|
6
8
|
## Purpose
|
|
7
9
|
You are a test engineering specialist. Your mission is to generate comprehensive tests for the provided code.
|
package/templates/manifest.json
CHANGED
|
@@ -10,14 +10,17 @@
|
|
|
10
10
|
],
|
|
11
11
|
"rules": [
|
|
12
12
|
"coding-style.mdc",
|
|
13
|
-
"frontend-design.mdc",
|
|
14
13
|
"git.mdc",
|
|
15
|
-
"
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
14
|
+
"toc.mdc"
|
|
15
|
+
],
|
|
16
|
+
"skills": [
|
|
17
|
+
"aesthetic",
|
|
18
|
+
"backend-development",
|
|
19
|
+
"frontend-design",
|
|
20
|
+
"frontend-development",
|
|
21
|
+
"problem-solving",
|
|
22
|
+
"research",
|
|
23
|
+
"sequential-thinking",
|
|
24
|
+
"ui-styling"
|
|
21
25
|
]
|
|
22
26
|
}
|
|
23
|
-
|
package/templates/rules/git.mdc
CHANGED
package/templates/rules/toc.mdc
CHANGED
|
@@ -2,19 +2,27 @@
|
|
|
2
2
|
alwaysApply: true
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
You have multiple specialized rules
|
|
5
|
+
You have multiple specialized rules organized into **Skills** (comprehensive guides with references) and **Rules** (concise best practices).
|
|
6
|
+
|
|
7
|
+
## Skills
|
|
8
|
+
|
|
9
|
+
- [Aesthetic](../skills/aesthetic/SKILL.mdc) - Visual design principles, storytelling, and micro-interactions for distinctive interfaces
|
|
10
|
+
- [Backend Development](../skills/backend-development/SKILL.mdc) - API design, architecture, authentication, security, and DevOps patterns
|
|
11
|
+
- [Frontend Design](../skills/frontend-design/SKILL.mdc) - Create distinctive, production-grade interfaces with bold aesthetics (avoid generic AI slop)
|
|
12
|
+
- [Frontend Development](../skills/frontend-development/SKILL.mdc) - React/TypeScript patterns: Suspense, lazy loading, TanStack Query/Router, MUI v7, file organization
|
|
13
|
+
- [UI Styling](../skills/ui-styling/SKILL.mdc) - shadcn/ui components, Tailwind CSS utilities, theming, accessibility, and canvas-based visual design
|
|
14
|
+
- [Sequential Thinking](../skills/sequential-thinking/SKILL.mdc) - Structured problem-solving with revision, branching, and hypothesis verification
|
|
15
|
+
- [Problem Solving](../skills/problem-solving/SKILL.mdc) - Techniques for complexity spirals, innovation blocks, meta-patterns, and scale testing
|
|
16
|
+
- [Research](../skills/research/SKILL.mdc) - Systematic research methodology for technical solutions with report generation
|
|
17
|
+
|
|
18
|
+
## Rules
|
|
6
19
|
|
|
7
|
-
- [TypeScript](./typescript.mdc) - TypeScript best practices and code style
|
|
8
|
-
- [Frontend Design](./frontend-design.mdc) - Frontend design best practices
|
|
9
|
-
- [React](./react.mdc) - React component patterns and best practices
|
|
10
|
-
- [Testing](./testing.mdc) - Testing standards and patterns
|
|
11
20
|
- [Git](./git.mdc) - Git commit and branching conventions
|
|
12
|
-
- [Security](./security.mdc) - Security best practices
|
|
13
21
|
- [Coding Style](./coding-style.mdc) - Coding style and best practices
|
|
14
|
-
- [Performance](./performance.mdc) - Performance best practices
|
|
15
22
|
|
|
16
|
-
Routing
|
|
23
|
+
## Routing Guidelines
|
|
24
|
+
|
|
17
25
|
1. For each user request, first infer which domains are relevant.
|
|
18
|
-
2. Select 0–3 rules that best match the request, prefer the SINGLE most specific
|
|
26
|
+
2. Select 0–3 rules/skills that best match the request, prefer the SINGLE most specific one when possible.
|
|
19
27
|
3. If both security and performance apply, prioritize `security.mdc` first, then `performance.mdc`.
|
|
20
28
|
4. If no rule clearly matches, ignore all rules and answer normally.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aesthetic
|
|
3
|
+
description: Create aesthetically beautiful interfaces following proven design principles. Use when building UI/UX, analyzing designs from inspiration sites, generating design images with ai-multimodal, implementing visual hierarchy and color theory, adding micro-interactions, or creating design documentation. Includes workflows for capturing and analyzing inspiration screenshots with chrome-devtools and ai-multimodal, iterative design image generation until aesthetic standards are met, and comprehensive design system guidance covering BEAUTIFUL (aesthetic principles), RIGHT (functionality/accessibility), SATISFYING (micro-interactions), and PEAK (storytelling) stages. Integrates with chrome-devtools, ai-multimodal, media-processing, ui-styling, and web-frameworks skills.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Aesthetic
|
|
7
|
+
|
|
8
|
+
Create aesthetically beautiful interfaces by following proven design principles and systematic workflows.
|
|
9
|
+
|
|
10
|
+
## When to Use This Skill
|
|
11
|
+
|
|
12
|
+
Use when:
|
|
13
|
+
- Building or designing user interfaces
|
|
14
|
+
- Analyzing designs from inspiration websites (Dribbble, Mobbin, Behance)
|
|
15
|
+
- Generating design images and evaluating aesthetic quality
|
|
16
|
+
- Implementing visual hierarchy, typography, color theory
|
|
17
|
+
- Adding micro-interactions and animations
|
|
18
|
+
- Creating design documentation and style guides
|
|
19
|
+
- Need guidance on accessibility and design systems
|
|
20
|
+
|
|
21
|
+
## Core Framework: Four-Stage Approach
|
|
22
|
+
|
|
23
|
+
### 1. BEAUTIFUL: Understanding Aesthetics
|
|
24
|
+
Study existing designs, identify patterns, extract principles. AI lacks aesthetic sense—standards must come from analyzing high-quality examples and aligning with market tastes.
|
|
25
|
+
|
|
26
|
+
**Reference**: [`references/design-principles.md`](references/design-principles.md) - Visual hierarchy, typography, color theory, white space principles.
|
|
27
|
+
|
|
28
|
+
### 2. RIGHT: Ensuring Functionality
|
|
29
|
+
Beautiful designs lacking usability are worthless. Study design systems, component architecture, accessibility requirements.
|
|
30
|
+
|
|
31
|
+
**Reference**: [`references/design-principles.md`](references/design-principles.md) - Design systems, component libraries, WCAG accessibility standards.
|
|
32
|
+
|
|
33
|
+
### 3. SATISFYING: Micro-Interactions
|
|
34
|
+
Incorporate subtle animations with appropriate timing (150-300ms), easing curves (ease-out for entry, ease-in for exit), sequential delays.
|
|
35
|
+
|
|
36
|
+
**Reference**: [`references/micro-interactions.md`](references/micro-interactions.md) - Duration guidelines, easing curves, performance optimization.
|
|
37
|
+
|
|
38
|
+
### 4. PEAK: Storytelling Through Design
|
|
39
|
+
Elevate with narrative elements—parallax effects, particle systems, thematic consistency. Use restraint: "too much of anything isn't good."
|
|
40
|
+
|
|
41
|
+
**Reference**: [`references/storytelling-design.md`](references/storytelling-design.md) - Narrative elements, scroll-based storytelling, interactive techniques.
|
|
42
|
+
|
|
43
|
+
## Workflows
|
|
44
|
+
|
|
45
|
+
### Workflow 1: Capture & Analyze Inspiration
|
|
46
|
+
|
|
47
|
+
**Purpose**: Extract design guidelines from inspiration websites.
|
|
48
|
+
|
|
49
|
+
**Steps**:
|
|
50
|
+
1. Browse inspiration sites (Dribbble, Mobbin, Behance, Awwwards)
|
|
51
|
+
2. Use **chrome-devtools** skill to capture full-screen screenshots (not full page)
|
|
52
|
+
3. Use **ai-multimodal** skill to analyze screenshots and extract:
|
|
53
|
+
- Design style (Minimalism, Glassmorphism, Neo-brutalism, etc.)
|
|
54
|
+
- Layout structure & grid systems
|
|
55
|
+
- Typography system & hierarchy
|
|
56
|
+
**IMPORTANT:** Try to predict the font name (Google Fonts) and font size in the given screenshot, don't just use Inter or Poppins.
|
|
57
|
+
- Color palette with hex codes
|
|
58
|
+
- Visual hierarchy techniques
|
|
59
|
+
- Component patterns & styling
|
|
60
|
+
- Micro-interactions
|
|
61
|
+
- Accessibility considerations
|
|
62
|
+
- Overall aesthetic quality rating (1-10)
|
|
63
|
+
4. Document findings in project design guidelines using templates
|
|
64
|
+
|
|
65
|
+
### Workflow 2: Generate & Iterate Design Images
|
|
66
|
+
|
|
67
|
+
**Purpose**: Create aesthetically pleasing design images through iteration.
|
|
68
|
+
|
|
69
|
+
**Steps**:
|
|
70
|
+
1. Define design prompt with: style, colors, typography, audience, animation specs
|
|
71
|
+
2. Use **ai-multimodal** skill to generate design images with Gemini API
|
|
72
|
+
3. Use **ai-multimodal** skill to analyze output images and evaluate aesthetic quality
|
|
73
|
+
4. If score < 7/10 or fails professional standards:
|
|
74
|
+
- Identify specific weaknesses (color, typography, layout, spacing, hierarchy)
|
|
75
|
+
- Refine prompt with improvements
|
|
76
|
+
- Regenerate with **ai-multimodal** or use **media-processing** skill to modify outputs (resize, crop, filters, composition)
|
|
77
|
+
5. Repeat until aesthetic standards met (score ≥ 7/10)
|
|
78
|
+
6. Document final design decisions using templates
|
|
79
|
+
|
|
80
|
+
## Design Documentation
|
|
81
|
+
|
|
82
|
+
### Create Design Guidelines
|
|
83
|
+
Use [`assets/design-guideline-template.md`](assets/design-guideline-template.md) to document:
|
|
84
|
+
- Color patterns & psychology
|
|
85
|
+
- Typography system & hierarchy
|
|
86
|
+
- Layout principles & spacing
|
|
87
|
+
- Component styling standards
|
|
88
|
+
- Accessibility considerations
|
|
89
|
+
- Design highlights & rationale
|
|
90
|
+
|
|
91
|
+
Save in project `./docs/design-guideline.md`.
|
|
92
|
+
|
|
93
|
+
### Create Design Story
|
|
94
|
+
Use [`assets/design-story-template.md`](assets/design-story-template.md) to document:
|
|
95
|
+
- Narrative elements & themes
|
|
96
|
+
- Emotional journey
|
|
97
|
+
- User journey & peak moments
|
|
98
|
+
- Design decision rationale
|
|
99
|
+
|
|
100
|
+
Save in project `./docs/design-story.md`.
|
|
101
|
+
|
|
102
|
+
## Resources & Integration
|
|
103
|
+
|
|
104
|
+
### Related Skills
|
|
105
|
+
- **ai-multimodal**: Analyze documents, screenshots & videos, generate design images, edit generated images, evaluate aesthetic quality using Gemini API
|
|
106
|
+
- **chrome-devtools**: Capture full-screen screenshots from inspiration websites, navigate between pages, interact with elements, read console logs & network requests
|
|
107
|
+
- **media-processing**: Refine generated images (FFmpeg for video, ImageMagick for images)
|
|
108
|
+
- **ui-styling**: Implement designs with shadcn/ui components + Tailwind CSS utility-first styling
|
|
109
|
+
- **web-frameworks**: Build with Next.js (App Router, Server Components, SSR/SSG)
|
|
110
|
+
|
|
111
|
+
### Reference Documentation
|
|
112
|
+
**References**: [`references/design-resources.md`](references/design-resources.md) - Inspiration platforms, design systems, AI tools, MCP integrations, development strategies.
|
|
113
|
+
|
|
114
|
+
## Key Principles
|
|
115
|
+
|
|
116
|
+
1. Aesthetic standards come from humans, not AI—study quality examples
|
|
117
|
+
2. Iterate based on analysis—never settle for first output
|
|
118
|
+
3. Balance beauty with functionality and accessibility
|
|
119
|
+
4. Document decisions for consistency across development
|
|
120
|
+
5. Use progressive disclosure in design—reveal complexity gradually
|
|
121
|
+
6. Always evaluate aesthetic quality objectively (score ≥ 7/10)
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# Design Guidelines: [Project Name]
|
|
2
|
+
|
|
3
|
+
_Generated: [Date]_
|
|
4
|
+
|
|
5
|
+
## Design Style
|
|
6
|
+
|
|
7
|
+
[Specify: Minimalism, Glassmorphism, Neo-brutalism, Modern, Memphis, Flat Design, etc.]
|
|
8
|
+
|
|
9
|
+
## Color Palette
|
|
10
|
+
|
|
11
|
+
### Primary Colors
|
|
12
|
+
- **Primary**: `#000000` - [Description/Usage]
|
|
13
|
+
- **Secondary**: `#000000` - [Description/Usage]
|
|
14
|
+
|
|
15
|
+
### Accent Colors
|
|
16
|
+
- **Accent**: `#000000` - [Description/Usage]
|
|
17
|
+
- **Success**: `#000000` - [Description/Usage]
|
|
18
|
+
- **Warning**: `#000000` - [Description/Usage]
|
|
19
|
+
- **Error**: `#000000` - [Description/Usage]
|
|
20
|
+
|
|
21
|
+
### Neutral Colors
|
|
22
|
+
- **Background**: `#000000` - [Description/Usage]
|
|
23
|
+
- **Surface**: `#000000` - [Description/Usage]
|
|
24
|
+
- **Border**: `#000000` - [Description/Usage]
|
|
25
|
+
|
|
26
|
+
### Color Psychology
|
|
27
|
+
[Explain mood and emotions evoked by color choices]
|
|
28
|
+
|
|
29
|
+
## Typography System
|
|
30
|
+
|
|
31
|
+
### Font Families
|
|
32
|
+
- **Primary Font**: [Font Name] - Body text, paragraphs
|
|
33
|
+
- **Secondary Font**: [Font Name] - Headings, emphasis
|
|
34
|
+
- **Monospace Font**: [Font Name] - Code, technical content
|
|
35
|
+
|
|
36
|
+
### Font Hierarchy
|
|
37
|
+
- **H1**: [Size]px / [Weight] / [Line Height] - [Usage]
|
|
38
|
+
- **H2**: [Size]px / [Weight] / [Line Height] - [Usage]
|
|
39
|
+
- **H3**: [Size]px / [Weight] / [Line Height] - [Usage]
|
|
40
|
+
- **Body**: [Size]px / [Weight] / [Line Height] - [Usage]
|
|
41
|
+
- **Small**: [Size]px / [Weight] / [Line Height] - [Usage]
|
|
42
|
+
|
|
43
|
+
### Typography Guidelines
|
|
44
|
+
- Line length: [Character count] characters max
|
|
45
|
+
- Paragraph spacing: [Value]
|
|
46
|
+
- Letter spacing: [Value]
|
|
47
|
+
|
|
48
|
+
## Layout Principles
|
|
49
|
+
|
|
50
|
+
### Grid System
|
|
51
|
+
- Columns: [Number]
|
|
52
|
+
- Gutter: [Size]px
|
|
53
|
+
- Margin: [Size]px
|
|
54
|
+
- Max width: [Size]px
|
|
55
|
+
|
|
56
|
+
### Spacing Scale
|
|
57
|
+
- xs: [Size]px
|
|
58
|
+
- sm: [Size]px
|
|
59
|
+
- md: [Size]px
|
|
60
|
+
- lg: [Size]px
|
|
61
|
+
- xl: [Size]px
|
|
62
|
+
- 2xl: [Size]px
|
|
63
|
+
|
|
64
|
+
### Responsive Breakpoints
|
|
65
|
+
- Mobile: [Width]px
|
|
66
|
+
- Tablet: [Width]px
|
|
67
|
+
- Desktop: [Width]px
|
|
68
|
+
- Wide: [Width]px
|
|
69
|
+
|
|
70
|
+
## Component Styling
|
|
71
|
+
|
|
72
|
+
### Buttons
|
|
73
|
+
- **Primary**: [Description of style]
|
|
74
|
+
- **Secondary**: [Description of style]
|
|
75
|
+
- **Ghost**: [Description of style]
|
|
76
|
+
- **Sizes**: [List sizes]
|
|
77
|
+
- **States**: Default, Hover, Active, Disabled
|
|
78
|
+
|
|
79
|
+
### Cards
|
|
80
|
+
- Border radius: [Value]
|
|
81
|
+
- Shadow: [Value]
|
|
82
|
+
- Padding: [Value]
|
|
83
|
+
- Background: [Color]
|
|
84
|
+
|
|
85
|
+
### Forms
|
|
86
|
+
- Input height: [Value]
|
|
87
|
+
- Border radius: [Value]
|
|
88
|
+
- Focus state: [Description]
|
|
89
|
+
- Error state: [Description]
|
|
90
|
+
|
|
91
|
+
### Navigation
|
|
92
|
+
- [Description of nav patterns]
|
|
93
|
+
|
|
94
|
+
## Visual Hierarchy
|
|
95
|
+
|
|
96
|
+
### Emphasis Techniques
|
|
97
|
+
- [List how to draw attention: size, color, placement, etc.]
|
|
98
|
+
|
|
99
|
+
### Content Flow
|
|
100
|
+
- [Describe reading patterns: F-pattern, Z-pattern, etc.]
|
|
101
|
+
|
|
102
|
+
## Micro-Interactions
|
|
103
|
+
|
|
104
|
+
### Animation Timing
|
|
105
|
+
- Fast: 150ms - [Usage]
|
|
106
|
+
- Normal: 250ms - [Usage]
|
|
107
|
+
- Slow: 350ms - [Usage]
|
|
108
|
+
|
|
109
|
+
### Easing Curves
|
|
110
|
+
- Ease-out: [Usage]
|
|
111
|
+
- Ease-in: [Usage]
|
|
112
|
+
- Spring: [Usage]
|
|
113
|
+
|
|
114
|
+
### Interactive States
|
|
115
|
+
- Hover: [Description]
|
|
116
|
+
- Active: [Description]
|
|
117
|
+
- Focus: [Description]
|
|
118
|
+
- Loading: [Description]
|
|
119
|
+
|
|
120
|
+
## Accessibility
|
|
121
|
+
|
|
122
|
+
### Contrast Ratios
|
|
123
|
+
- Text: [Ratio] (WCAG AA: 4.5:1 minimum)
|
|
124
|
+
- Large text: [Ratio] (WCAG AA: 3:1 minimum)
|
|
125
|
+
- UI elements: [Ratio]
|
|
126
|
+
|
|
127
|
+
### Focus Indicators
|
|
128
|
+
- [Description of focus styles]
|
|
129
|
+
|
|
130
|
+
### Touch Targets
|
|
131
|
+
- Minimum size: 44x44px
|
|
132
|
+
|
|
133
|
+
## Design Highlights
|
|
134
|
+
|
|
135
|
+
### What Works Well
|
|
136
|
+
- [List successful design decisions]
|
|
137
|
+
|
|
138
|
+
### Unique Elements
|
|
139
|
+
- [List distinctive design features]
|
|
140
|
+
|
|
141
|
+
### Brand Alignment
|
|
142
|
+
- [Explain how design supports brand identity]
|
|
143
|
+
|
|
144
|
+
## Implementation Notes
|
|
145
|
+
|
|
146
|
+
### Technologies
|
|
147
|
+
- [List frameworks, libraries, tools used]
|
|
148
|
+
|
|
149
|
+
### Performance Considerations
|
|
150
|
+
- [List optimization strategies]
|
|
151
|
+
|
|
152
|
+
### Browser Support
|
|
153
|
+
- [List supported browsers/versions]
|
|
154
|
+
|
|
155
|
+
## Resources
|
|
156
|
+
|
|
157
|
+
### Design Files
|
|
158
|
+
- Figma: [Link]
|
|
159
|
+
- Assets: [Link]
|
|
160
|
+
|
|
161
|
+
### Related Documentation
|
|
162
|
+
- [Link to design-story.md]
|
|
163
|
+
- [Link to component library]
|