Loading...
Loading...
Full project soul alignment in one command. Scans every frontend file in the project, builds a prioritized plan, then systematically aligns all components and styles to .marrow.md. Smart enough to detect if .marrow.md was updated since the last run and only reprocess files affected by what changed — not a full rewrite every time. Use this skill when the user wants to align the entire project to the design soul at once, just installed marrow mid-project and wants to catch everything up, or updated .marrow.md via /marrow-update and wants to propagate only the changed rules across the project. Triggers on: /marrow-redesign, or prompts like "align the whole project", "redesign everything to match marrow", "apply marrow to all files", "full soul alignment", "catch everything up to marrow", "propagate the marrow update", "marrow everything". Requires .marrow.md to exist. If not found, instructs user to run /marrow first. This is a multi-step agentic command — it will take multiple turns to complete large projects. It creates a .marrow-state.json file to track progress and enable smart diff on future runs.
npx skill4agent add ashourml/marrow marrow-redesign.marrow.md.marrow.md.marrow.md✗ No .marrow.md found.
Run /marrow with reference images first to extract the design soul.
Then run /marrow-redesign to align the whole project..marrow-state.json.marrow.md.marrow.md.marrow-state.json.marrow.md.marrow-state.jsonMode: [First Run — full alignment] OR [Smart Update — only propagating changes to [sections]]globals.cssapp.cssindex.csstailwind.config.*theme.*tokens.*variables.csscolors.*ButtonInputTypographyCardBadgeLinkLayoutHeaderNavFooterSidebarcomponents/features/modules/pages/app/views/node_modules/dist/build/.next/out/*.test.**.spec.**.generated.*routeTree.gen.*vite.config.*next.config.*.marrow-state.json.marrow.md| Changed section | Affects |
|---|---|
| Section 4 (colors) | All files using color values — global CSS, every component |
| Section 2 (spacing) | All files using spacing/padding/margin/gap |
| Section 3 (typography) | All files using font, font-size, font-weight, letter-spacing |
| Section 5 (components) | Button, Input, Card, and any component with interactive states |
| Section 7 (motion) | Any file with transitions, animations, keyframes |
| Section 6 (layout) | Layout files, page-level files |
| Section 0 (soul/personality) | No direct code impact — note in plan but no file changes |
| Section 8 (anti-patterns) | All files — anti-patterns can appear anywhere |
.marrow.mdSmart update: .marrow.md Section 4 (colors) changed.
globals.css: always reprocessed (safe-mode reconciliation)
Affects: 12 of 34 component files
Skipping: 22 files (already aligned, unaffected by color changes)
Processing: 13 files total (globals.css + 12 components)globals.cssapp.cssindex.cssbase.cssvariables.cssglobals.css.marrow.md.marrow.md/* globals.css has this: */
--primary: #7C3AED; /* old purple */
--font-size-base: 16px;
/* .marrow.md says: */
--color-accent: #3B82F6; /* different name, different value */
--body-size: 15px; /* different name */var(--primary)htmlbodya { color: #7C3AED }h1 { font-size: 2.5rem }* { border-radius: 8px }* { transition: all 0.3s ease }.marrow.mdglobals.css/* BEFORE */
--primary: #7C3AED;
/* AFTER — map old name to Marrow token, comment explains */
--color-accent: #3B82F6; /* Marrow: brand accent — ~4% visual weight */
--primary: var(--color-accent); /* legacy alias — migrate components to --color-accent */box-sizing: border-boxmargin: 0.marrow.mdah1body/* Original (keep it) */
a {
color: #7C3AED;
}
/* Marrow override (add below) */
/* marrow: link color — matches Section 4 primary text, not accent */
a {
color: var(--color-text-primary);
}:root/* ============================================================
MARROW DESIGN TOKENS — generated by /marrow
Source of truth: .marrow.md
Do not edit manually — use /marrow-update to change values
============================================================ */
:root {
/* canvas */
--marrow-canvas: [value];
/* text */
--marrow-text-primary: [value];
--marrow-text-secondary: [value];
--marrow-text-tertiary: [value];
/* accent — USE AT [XX]% VISUAL WEIGHT ONLY */
--marrow-accent: [value];
/* surfaces */
--marrow-surface: [value];
--marrow-surface-hover: [value];
/* borders */
--marrow-border: [value];
--marrow-border-focus: [value];
/* semantic */
--marrow-success: [value];
--marrow-error: [value];
--marrow-warning: [value];
/* spacing — base unit: [N]px */
--marrow-space-1: [1×base];
--marrow-space-2: [2×base];
--marrow-space-3: [3×base];
--marrow-space-4: [4×base];
--marrow-space-6: [6×base];
--marrow-space-8: [8×base];
--marrow-space-12: [12×base];
--marrow-space-16: [16×base];
/* typography */
--marrow-font-display: [font], [fallback];
--marrow-font-body: [font], [fallback];
--marrow-font-mono: [font], monospace;
/* motion */
--marrow-ease: cubic-bezier([values]);
--marrow-duration-micro: [value]ms;
--marrow-duration-element: [value]ms;
--marrow-duration-panel: [value]ms;
/* radius */
--marrow-radius-sm: [value]px;
--marrow-radius-md: [value]px;
--marrow-radius-lg: [value]px;
}--marrow-/*
* MARROW CONFLICT MAP
* Old variable → New Marrow token
* ---
* --primary → --marrow-accent
* --font-size-base → --marrow-font-body (via font-size in type scale)
* --spacing-md → --marrow-space-4
* ---
* Legacy aliases are kept below for backward compatibility.
* Migrate components to --marrow-* tokens over time.
* Remove aliases once migration is complete.
*/─────────────────────────────────────────
Phase 0 · globals.css — Safe-Mode Reconciliation
─────────────────────────────────────────
Conflicts found: [N]
· --primary (#7C3AED) conflicts with --marrow-accent (#3B82F6)
→ kept as legacy alias: --primary: var(--marrow-accent)
· body { font-size: 16px } conflicts with Marrow 15px base
→ scoped: added --marrow-font-body override below
· * { transition: all 0.3s ease } overrides Marrow motion system
→ replaced with: * { transition: none } + specific Marrow transitions on interactive elements
Marrow token block added: [N] tokens injected into :root
Legacy aliases created: [N] (safe — old names now point to Marrow values)
Non-conflicting rules preserved: [N]
⚠ Migrate these aliases when ready:
--primary → use --marrow-accent instead
--spacing-md → use --marrow-space-4 instead
✓ globals.css saved## Marrow Redesign — Alignment Plan
Mode: [First Run / Smart Update]
Soul: [3-word personality]
Files to align: [N] of [total N] frontend files
### Execution order
Phase 0 — globals.css reconciliation ✓ (already done above)
Phase 1 — Foundation (must go first, everything inherits from these)
[ ] tailwind.config.ts — sync --marrow-* tokens into Tailwind theme
[ ] tokens.ts — update design token values to match --marrow-* vars
Phase 2 — Base components (everything is built from these)
[ ] Button.tsx — [N] violations: wrong radius, wrong hover state
[ ] Input.tsx — [N] violations: wrong border, wrong focus ring
[ ] Typography.tsx — [N] violations: wrong type scale
[ ] Card.tsx — [N] violations: shadow (anti-pattern), wrong padding
Phase 3 — Layout components
[ ] Header.tsx — [N] violations: wrong spacing, wrong accent usage
[ ] Nav.tsx — [N] violations: wrong active state style
[ ] Sidebar.tsx — [N] violations: wrong surface color
Phase 4 — Feature components
[ ] [component] — [N] violations
...
Phase 5 — Pages
[ ] [page] — [N] violations
...
[Skipped — already aligned, unaffected by changes]
[N] files skipped
Estimated changes: [N] total violations to fix across all files
Proceed? (Say "yes" or "go" to start, or ask to skip any phase)marrow-align.marrow-state.json.marrow-state.json─────────────────────────────────────────
[Phase N] · [filename]
─────────────────────────────────────────
[aligned code]
Fixes: [N]
· [what changed → what it is now]
· [what changed → what it is now]
✓ Saved✓ Phase [N] complete — [N] files aligned, [N] violations fixed.marrow-state.json{
"version": "1.0",
"last_redesign": "[ISO timestamp]",
"marrow_checksums": {
"section_0": "[hash of Section 0 content]",
"section_1": "[hash]",
"section_2": "[hash]",
"section_3": "[hash]",
"section_4": "[hash]",
"section_5": "[hash]",
"section_6": "[hash]",
"section_7": "[hash]",
"section_8": "[hash]"
},
"aligned_files": {
"src/components/Button.tsx": {
"aligned_at": "[ISO timestamp]",
"violations_fixed": 4,
"sections_applied": ["section_2", "section_4", "section_5"]
},
"src/styles/globals.css": {
"aligned_at": "[ISO timestamp]",
"violations_fixed": 8,
"sections_applied": ["section_2", "section_3", "section_4", "section_7"]
}
},
"skipped_files": {
"src/components/Icon.tsx": {
"reason": "already aligned, unaffected by recent changes",
"last_aligned": "[ISO timestamp]"
}
}
}.marrow-state.json.gitignore## Marrow Redesign — Complete
Mode: [First Run / Smart Update]
### Results
Files aligned: [N]
Files skipped: [N] (already aligned, unaffected)
Violations fixed: [N] total
CRITICAL: [N]
MAJOR: [N]
MINOR: [N]
### By phase
Phase 0 globals.css: [N] conflicts resolved · [N] Marrow tokens injected
Phase 1 Foundation: [N] files · [N] fixes
Phase 2 Base components: [N] files · [N] fixes
Phase 3 Layout components: [N] files · [N] fixes
Phase 4 Feature components: [N] files · [N] fixes
Phase 5 Pages: [N] files · [N] fixes
### What's next
marrow-apply is active — new components will be built in the soul automatically.
If you update .marrow.md with /marrow-update, run /marrow-redesign again.
It will only reprocess files affected by what changed.
To audit any single file: /marrow-check [filename]
To fix a specific file: /marrow-align [filename]/marrow-redesign.marrow-state.json⚡ Resuming previous redesign run from [timestamp]
Progress: [N] of [N] files completed
Continuing from: [next file].marrow-state.json--marrow-.marrow-state.json⚠ Skipped: [filename] — too complex for automated alignment.
Run /marrow-align [filename] manually for fine-grained control.