design-brain-memory 0.8.2 → 0.9.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/agentBrowser.d.ts +1 -0
- package/dist/agentBrowser.js +1 -0
- package/dist/agentBrowser.js.map +1 -1
- package/dist/classify.d.ts +21 -0
- package/dist/classify.js +205 -0
- package/dist/classify.js.map +1 -0
- package/dist/cli.js +216 -219
- package/dist/cli.js.map +1 -1
- package/dist/commands.d.ts +1 -60
- package/dist/commands.js +10 -322
- package/dist/commands.js.map +1 -1
- package/dist/extractFromUrl.d.ts +0 -7
- package/dist/extractFromUrl.js +353 -82
- package/dist/extractFromUrl.js.map +1 -1
- package/dist/index.d.ts +12 -24
- package/dist/index.js +11 -16
- package/dist/index.js.map +1 -1
- package/dist/llm.d.ts +6 -0
- package/dist/llm.js +12 -1
- package/dist/llm.js.map +1 -1
- package/dist/persona.d.ts +2 -0
- package/dist/persona.js +234 -0
- package/dist/persona.js.map +1 -0
- package/dist/query.js +6 -1
- package/dist/query.js.map +1 -1
- package/dist/render.d.ts +10 -2
- package/dist/render.js +175 -80
- package/dist/render.js.map +1 -1
- package/dist/scan.d.ts +10 -0
- package/dist/scan.js +393 -0
- package/dist/scan.js.map +1 -0
- package/dist/scanRenderer.d.ts +2 -0
- package/dist/scanRenderer.js +155 -0
- package/dist/scanRenderer.js.map +1 -0
- package/dist/skillPrompt.d.ts +3 -1
- package/dist/skillPrompt.js +148 -22
- package/dist/skillPrompt.js.map +1 -1
- package/dist/store.d.ts +5 -1
- package/dist/store.js +19 -0
- package/dist/store.js.map +1 -1
- package/dist/taste.d.ts +9 -0
- package/dist/taste.js +598 -0
- package/dist/taste.js.map +1 -0
- package/dist/tasteDiff.d.ts +19 -0
- package/dist/tasteDiff.js +340 -0
- package/dist/tasteDiff.js.map +1 -0
- package/dist/tasteGenerate.d.ts +12 -0
- package/dist/tasteGenerate.js +140 -0
- package/dist/tasteGenerate.js.map +1 -0
- package/dist/tasteRefine.d.ts +13 -0
- package/dist/tasteRefine.js +351 -0
- package/dist/tasteRefine.js.map +1 -0
- package/dist/tasteRenderer.d.ts +4 -0
- package/dist/tasteRenderer.js +133 -0
- package/dist/tasteRenderer.js.map +1 -0
- package/dist/theatrical.d.ts +5 -0
- package/dist/theatrical.js +258 -0
- package/dist/theatrical.js.map +1 -0
- package/dist/types.d.ts +196 -27
- package/package.json +4 -3
- package/skills/SKILL.md +36 -0
- package/skills/design-brain/SKILL.md +77 -0
- package/README.md +0 -242
- package/dist/aggregate.d.ts +0 -9
- package/dist/aggregate.js +0 -53
- package/dist/aggregate.js.map +0 -1
- package/dist/batch.d.ts +0 -16
- package/dist/batch.js +0 -44
- package/dist/batch.js.map +0 -1
- package/dist/compare.d.ts +0 -33
- package/dist/compare.js +0 -83
- package/dist/compare.js.map +0 -1
- package/dist/componentGraph.d.ts +0 -22
- package/dist/componentGraph.js +0 -106
- package/dist/componentGraph.js.map +0 -1
- package/dist/contextLayer.d.ts +0 -12
- package/dist/contextLayer.js +0 -263
- package/dist/contextLayer.js.map +0 -1
- package/dist/cssInJs.d.ts +0 -9
- package/dist/cssInJs.js +0 -124
- package/dist/cssInJs.js.map +0 -1
- package/dist/graphView.d.ts +0 -21
- package/dist/graphView.js +0 -492
- package/dist/graphView.js.map +0 -1
- package/dist/knowledge.d.ts +0 -20
- package/dist/knowledge.js +0 -208
- package/dist/knowledge.js.map +0 -1
- package/dist/liveView.d.ts +0 -15
- package/dist/liveView.js +0 -476
- package/dist/liveView.js.map +0 -1
- package/dist/moodboard.d.ts +0 -3
- package/dist/moodboard.js +0 -139
- package/dist/moodboard.js.map +0 -1
- package/dist/reviewChecklist.d.ts +0 -17
- package/dist/reviewChecklist.js +0 -126
- package/dist/reviewChecklist.js.map +0 -1
- package/dist/scorecard.d.ts +0 -48
- package/dist/scorecard.js +0 -201
- package/dist/scorecard.js.map +0 -1
- package/dist/styleDictionary.d.ts +0 -16
- package/dist/styleDictionary.js +0 -89
- package/dist/styleDictionary.js.map +0 -1
- package/dist/svg.d.ts +0 -5
- package/dist/svg.js +0 -162
- package/dist/svg.js.map +0 -1
- package/dist/systemDiff.d.ts +0 -28
- package/dist/systemDiff.js +0 -107
- package/dist/systemDiff.js.map +0 -1
- package/dist/tailwind.d.ts +0 -2
- package/dist/tailwind.js +0 -122
- package/dist/tailwind.js.map +0 -1
- package/dist/tokenNaming.d.ts +0 -5
- package/dist/tokenNaming.js +0 -229
- package/dist/tokenNaming.js.map +0 -1
- package/dist/tokens.d.ts +0 -17
- package/dist/tokens.js +0 -44
- package/dist/tokens.js.map +0 -1
- package/dist/trends.d.ts +0 -12
- package/dist/trends.js +0 -178
- package/dist/trends.js.map +0 -1
- package/dist/wiki.d.ts +0 -10
- package/dist/wiki.js +0 -346
- package/dist/wiki.js.map +0 -1
- package/dist/writingStyle.d.ts +0 -38
- package/dist/writingStyle.js +0 -224
- package/dist/writingStyle.js.map +0 -1
package/dist/skillPrompt.js
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
import { execSync } from 'node:child_process';
|
|
2
1
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
3
2
|
import { homedir } from 'node:os';
|
|
4
|
-
import { join } from 'node:path';
|
|
3
|
+
import { join, dirname } from 'node:path';
|
|
5
4
|
import { confirmPrompt } from './interactive.js';
|
|
6
5
|
const CONFIG_DIRECTORY = join(homedir(), '.design-brain-memory');
|
|
7
6
|
const CONFIG_FILE = join(CONFIG_DIRECTORY, 'config.json');
|
|
8
7
|
const DEFAULT_SKILL_REPO = 'design-brain/design-brain';
|
|
9
8
|
function readConfig() {
|
|
10
9
|
try {
|
|
11
|
-
if (!existsSync(CONFIG_FILE))
|
|
10
|
+
if (!existsSync(CONFIG_FILE))
|
|
12
11
|
return {};
|
|
13
|
-
}
|
|
14
12
|
return JSON.parse(readFileSync(CONFIG_FILE, 'utf-8'));
|
|
15
13
|
}
|
|
16
14
|
catch {
|
|
@@ -25,42 +23,170 @@ function writeConfig(config) {
|
|
|
25
23
|
writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));
|
|
26
24
|
}
|
|
27
25
|
catch {
|
|
28
|
-
// no-op:
|
|
26
|
+
// no-op: config persistence should never block command execution
|
|
29
27
|
}
|
|
30
28
|
}
|
|
29
|
+
/* ─── Backward-compatible export ─── */
|
|
31
30
|
export function getDefaultSkillRepo() {
|
|
32
31
|
return process.env.DESIGN_BRAIN_SKILL_REPO?.trim() || DEFAULT_SKILL_REPO;
|
|
33
32
|
}
|
|
34
|
-
|
|
33
|
+
/* ─── SKILL.md content ─── */
|
|
34
|
+
function getSkillContent() {
|
|
35
|
+
// Try to load from bundled skills/SKILL.md first
|
|
36
|
+
const bundledPath = join(dirname(new URL(import.meta.url).pathname), '..', 'skills', 'SKILL.md');
|
|
35
37
|
try {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
+
if (existsSync(bundledPath)) {
|
|
39
|
+
return readFileSync(bundledPath, 'utf-8');
|
|
40
|
+
}
|
|
38
41
|
}
|
|
39
42
|
catch {
|
|
40
|
-
|
|
43
|
+
// fall through to inline content
|
|
44
|
+
}
|
|
45
|
+
// Inline fallback
|
|
46
|
+
return `---
|
|
47
|
+
name: design-brain
|
|
48
|
+
description: Design system awareness for AI coding agents. Provides design token guidance, component patterns, and design principles extracted from your codebase.
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
# Design Brain Skill
|
|
52
|
+
|
|
53
|
+
You have access to design system knowledge extracted by design-brain-memory.
|
|
54
|
+
|
|
55
|
+
## When to Use This Skill
|
|
56
|
+
|
|
57
|
+
- When writing UI components, reference the color palette and typography system
|
|
58
|
+
- When adding spacing/layout, follow the established spacing scale
|
|
59
|
+
- When creating new components, follow existing component patterns
|
|
60
|
+
- When adding transitions/animations, match existing motion patterns
|
|
61
|
+
|
|
62
|
+
## Design Principles
|
|
63
|
+
|
|
64
|
+
1. **Consistency** — Use existing design tokens rather than ad-hoc values
|
|
65
|
+
2. **Systematic spacing** — Prefer multiples of 4px (4, 8, 12, 16, 24, 32, 48, 64)
|
|
66
|
+
3. **Color discipline** — Use palette colors from CSS variables or design tokens
|
|
67
|
+
4. **Typography scale** — Stick to the established font size scale
|
|
68
|
+
5. **Motion restraint** — Use consistent transition timing across the UI
|
|
69
|
+
|
|
70
|
+
## Quick Reference
|
|
71
|
+
|
|
72
|
+
- Run \`npx design-brain-memory scan\` to see your design health score
|
|
73
|
+
- Run \`npx design-brain-memory scan .\` to scan the current directory
|
|
74
|
+
- Design tokens are extracted from CSS, SCSS, and component files
|
|
75
|
+
|
|
76
|
+
## Tips for Code Generation
|
|
77
|
+
|
|
78
|
+
- Prefer CSS custom properties (--var-name) over hardcoded values
|
|
79
|
+
- Use the project's existing color palette — don't introduce new colors without reason
|
|
80
|
+
- Match existing component patterns before creating new abstractions
|
|
81
|
+
- Keep transition durations consistent (prefer 150ms, 200ms, or 300ms)
|
|
82
|
+
`;
|
|
83
|
+
}
|
|
84
|
+
/* ─── Agent detection ─── */
|
|
85
|
+
const AGENT_DEFS = [
|
|
86
|
+
{
|
|
87
|
+
name: 'Claude Code',
|
|
88
|
+
configCheck: join(homedir(), '.claude'),
|
|
89
|
+
skillSubpath: join('.claude', 'skills', 'design-brain', 'SKILL.md'),
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
name: 'Cursor',
|
|
93
|
+
configCheck: join(homedir(), '.cursor'),
|
|
94
|
+
skillSubpath: join('.cursor', 'skills', 'design-brain', 'SKILL.md'),
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
name: 'Windsurf',
|
|
98
|
+
configCheck: join(homedir(), '.codeium', 'windsurf'),
|
|
99
|
+
skillSubpath: join('.codeium', 'windsurf', 'skills', 'design-brain', 'SKILL.md'),
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
name: 'Amp',
|
|
103
|
+
configCheck: join(homedir(), '.amp'),
|
|
104
|
+
skillSubpath: join('.amp', 'skills', 'design-brain', 'SKILL.md'),
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
name: 'Codex',
|
|
108
|
+
configCheck: join(homedir(), '.codex'),
|
|
109
|
+
skillSubpath: join('.codex', 'skills', 'design-brain', 'SKILL.md'),
|
|
110
|
+
},
|
|
111
|
+
];
|
|
112
|
+
export function detectAgents() {
|
|
113
|
+
const agents = [];
|
|
114
|
+
for (const def of AGENT_DEFS) {
|
|
115
|
+
if (existsSync(def.configCheck)) {
|
|
116
|
+
agents.push({
|
|
117
|
+
name: def.name,
|
|
118
|
+
configDir: def.configCheck,
|
|
119
|
+
skillDir: join(homedir(), def.skillSubpath),
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return agents;
|
|
124
|
+
}
|
|
125
|
+
export function installSkillToAgents(agents) {
|
|
126
|
+
const content = getSkillContent();
|
|
127
|
+
const results = [];
|
|
128
|
+
for (const agent of agents) {
|
|
129
|
+
try {
|
|
130
|
+
const dir = dirname(agent.skillDir);
|
|
131
|
+
if (!existsSync(dir)) {
|
|
132
|
+
mkdirSync(dir, { recursive: true });
|
|
133
|
+
}
|
|
134
|
+
writeFileSync(agent.skillDir, content, 'utf-8');
|
|
135
|
+
results.push({ agent, success: true });
|
|
136
|
+
}
|
|
137
|
+
catch (err) {
|
|
138
|
+
results.push({
|
|
139
|
+
agent,
|
|
140
|
+
success: false,
|
|
141
|
+
error: err instanceof Error ? err.message : String(err),
|
|
142
|
+
});
|
|
143
|
+
}
|
|
41
144
|
}
|
|
145
|
+
return results;
|
|
42
146
|
}
|
|
147
|
+
/* ─── ANSI helpers ─── */
|
|
148
|
+
const USE_COLOR = process.stdout.isTTY !== false;
|
|
149
|
+
const RESET = USE_COLOR ? '\x1b[0m' : '';
|
|
150
|
+
const BOLD = USE_COLOR ? '\x1b[1m' : '';
|
|
151
|
+
const GREEN = USE_COLOR ? '\x1b[32m' : '';
|
|
152
|
+
const DIM = USE_COLOR ? '\x1b[2m' : '';
|
|
153
|
+
const RED = USE_COLOR ? '\x1b[31m' : '';
|
|
154
|
+
/* ─── Main prompt flow ─── */
|
|
43
155
|
export async function maybePromptSkillInstall(skipPrompts) {
|
|
44
156
|
const config = readConfig();
|
|
45
|
-
if (config.skillPromptDismissed)
|
|
157
|
+
if (config.skillPromptDismissed)
|
|
46
158
|
return;
|
|
47
|
-
|
|
48
|
-
if (skipPrompts) {
|
|
159
|
+
if (skipPrompts)
|
|
49
160
|
return;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const shouldInstall = await confirmPrompt('Install Design Brain skill now?', true);
|
|
54
|
-
if (!shouldInstall) {
|
|
161
|
+
const agents = detectAgents();
|
|
162
|
+
if (agents.length === 0) {
|
|
163
|
+
console.log(`\n${DIM}No AI agents detected. Skill installation skipped.${RESET}`);
|
|
55
164
|
return;
|
|
56
165
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
console.log(
|
|
166
|
+
console.log(`\n ${BOLD}Detected AI agents:${RESET}`);
|
|
167
|
+
for (const agent of agents) {
|
|
168
|
+
console.log(` ${DIM}\u2022${RESET} ${agent.name}`);
|
|
169
|
+
}
|
|
170
|
+
console.log('');
|
|
171
|
+
const shouldInstall = await confirmPrompt(`Install design-brain skill to ${agents.length} agent${agents.length > 1 ? 's' : ''}?`, true);
|
|
172
|
+
if (!shouldInstall) {
|
|
60
173
|
writeConfig({ ...config, skillPromptDismissed: true });
|
|
61
174
|
return;
|
|
62
175
|
}
|
|
63
|
-
|
|
64
|
-
console.log(
|
|
176
|
+
const results = installSkillToAgents(agents);
|
|
177
|
+
console.log('');
|
|
178
|
+
for (const r of results) {
|
|
179
|
+
if (r.success) {
|
|
180
|
+
console.log(` ${GREEN}\u2714${RESET} ${r.agent.name}`);
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
console.log(` ${RED}\u2718${RESET} ${r.agent.name} — ${r.error}`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
const allOk = results.every(r => r.success);
|
|
187
|
+
if (allOk) {
|
|
188
|
+
console.log(`\n ${GREEN}Design Brain skill installed to all agents.${RESET}\n`);
|
|
189
|
+
}
|
|
190
|
+
writeConfig({ ...config, skillPromptDismissed: true });
|
|
65
191
|
}
|
|
66
192
|
//# sourceMappingURL=skillPrompt.js.map
|
package/dist/skillPrompt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillPrompt.js","sourceRoot":"","sources":["../src/skillPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"skillPrompt.js","sourceRoot":"","sources":["../src/skillPrompt.ts"],"names":[],"mappings":"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"}
|
package/dist/store.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import type { DesignBrainDatabase, ProjectRecord } from './types.js';
|
|
1
|
+
import type { DesignBrainDatabase, ProjectRecord, TasteProfile } from './types.js';
|
|
2
2
|
export declare function brainRoot(rootDir: string): string;
|
|
3
3
|
export declare function databasePath(rootDir: string): string;
|
|
4
4
|
export declare function projectDir(rootDir: string, projectId: string): string;
|
|
5
5
|
export declare function projectAssetDir(rootDir: string, projectId: string): string;
|
|
6
|
+
export declare function tasteDir(rootDir: string): string;
|
|
7
|
+
export declare function tasteProfilePath(rootDir: string, projectId: string): string;
|
|
6
8
|
export declare function ensureBrainExists(rootDir: string): Promise<void>;
|
|
7
9
|
export declare function loadDatabase(rootDir: string): Promise<DesignBrainDatabase>;
|
|
8
10
|
export declare function saveDatabase(rootDir: string, db: DesignBrainDatabase): Promise<void>;
|
|
@@ -12,3 +14,5 @@ export declare function ensureProject(db: DesignBrainDatabase, options: {
|
|
|
12
14
|
projectName?: string;
|
|
13
15
|
description?: string;
|
|
14
16
|
}): ProjectRecord;
|
|
17
|
+
export declare function loadTasteProfile(rootDir: string, projectId: string): Promise<TasteProfile | null>;
|
|
18
|
+
export declare function saveTasteProfile(rootDir: string, profile: TasteProfile): Promise<void>;
|
package/dist/store.js
CHANGED
|
@@ -13,11 +13,18 @@ export function projectDir(rootDir, projectId) {
|
|
|
13
13
|
export function projectAssetDir(rootDir, projectId) {
|
|
14
14
|
return path.join(brainRoot(rootDir), 'assets', projectId);
|
|
15
15
|
}
|
|
16
|
+
export function tasteDir(rootDir) {
|
|
17
|
+
return path.join(brainRoot(rootDir), 'taste');
|
|
18
|
+
}
|
|
19
|
+
export function tasteProfilePath(rootDir, projectId) {
|
|
20
|
+
return path.join(tasteDir(rootDir), `${slugify(projectId)}.json`);
|
|
21
|
+
}
|
|
16
22
|
export async function ensureBrainExists(rootDir) {
|
|
17
23
|
const base = brainRoot(rootDir);
|
|
18
24
|
await fs.ensureDir(path.join(base, 'projects'));
|
|
19
25
|
await fs.ensureDir(path.join(base, 'assets'));
|
|
20
26
|
await fs.ensureDir(path.join(base, 'graph'));
|
|
27
|
+
await fs.ensureDir(path.join(base, 'taste'));
|
|
21
28
|
const dbFile = databasePath(rootDir);
|
|
22
29
|
if (!(await fs.pathExists(dbFile))) {
|
|
23
30
|
const db = {
|
|
@@ -66,4 +73,16 @@ export function ensureProject(db, options) {
|
|
|
66
73
|
project.updatedAt = now;
|
|
67
74
|
return project;
|
|
68
75
|
}
|
|
76
|
+
export async function loadTasteProfile(rootDir, projectId) {
|
|
77
|
+
const filePath = tasteProfilePath(rootDir, projectId);
|
|
78
|
+
if (!await fs.pathExists(filePath)) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
return fs.readJson(filePath);
|
|
82
|
+
}
|
|
83
|
+
export async function saveTasteProfile(rootDir, profile) {
|
|
84
|
+
const dir = tasteDir(rootDir);
|
|
85
|
+
await fs.ensureDir(dir);
|
|
86
|
+
await fs.writeJson(tasteProfilePath(rootDir, profile.id), profile, { spaces: 2 });
|
|
87
|
+
}
|
|
69
88
|
//# sourceMappingURL=store.js.map
|
package/dist/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/dist/taste.d.ts
ADDED