MertCapkin-GraphCraft 0.1.1__py3-none-any.whl
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.
- graphcraft/__init__.py +8 -0
- graphcraft/__main__.py +4 -0
- graphcraft/assets/.cursor/commands/graphcraft.md +24 -0
- graphcraft/assets/.cursor/rules/graphcraft.mdc +106 -0
- graphcraft/assets/.cursor/skills/design-strategist/DESIGN_STRATEGIST.md +23 -0
- graphcraft/assets/.cursor/skills/designer/DESIGNER.md +26 -0
- graphcraft/assets/.cursor/skills/mobile-app/MOBILE_APP.md +15 -0
- graphcraft/assets/.cursor/skills/mobile-game/MOBILE_GAME.md +19 -0
- graphcraft/assets/.cursor/skills/stitch-import/STITCH_IMPORT.md +25 -0
- graphcraft/assets/.cursor/skills/visual-review/VISUAL_REVIEW.md +20 -0
- graphcraft/assets/.graphcraft-assets-version +1 -0
- graphcraft/assets/.stitch/metadata.template.json +20 -0
- graphcraft/assets/design/screens/login.example.yaml +14 -0
- graphcraft/assets/design-system/components/button.example.yaml +20 -0
- graphcraft/assets/design-system/tokens.base.json +27 -0
- graphcraft/assets/design-system/tokens.json +27 -0
- graphcraft/assets/graphcraft.config.yaml +47 -0
- graphcraft/assets/handoff/AESTHETIC_BRIEF.md +52 -0
- graphcraft/assets/handoff/DESIGN_BRIEF.md +47 -0
- graphcraft/assets/orchestrator/GRAPHCRAFT.md +87 -0
- graphcraft/assets/packages/assets/README.md +22 -0
- graphcraft/assets/packages/ui-core/README.md +23 -0
- graphcraft/assets/packs/mobile-app/STACKS.md +28 -0
- graphcraft/assets/packs/mobile-game/STACKS.md +30 -0
- graphcraft/assets/packs/stitch/README.md +20 -0
- graphcraft/assets/packs/styles/minimal-dark/style.yaml +18 -0
- graphcraft/bootstrap.py +68 -0
- graphcraft/cli.py +63 -0
- graphcraft/constants.py +21 -0
- graphcraft/design_graph/__init__.py +1 -0
- graphcraft/design_graph/builder.py +218 -0
- graphcraft/design_graph/cli.py +83 -0
- graphcraft/design_graph/harmony.py +47 -0
- graphcraft/design_graph/query.py +81 -0
- graphcraft/design_graph/report.py +36 -0
- graphcraft/design_graph/schema.py +69 -0
- graphcraft/design_graph/stitch_adapter.py +83 -0
- graphcraft/doctor.py +104 -0
- graphcraft/init_cmd.py +78 -0
- graphcraft/installer.py +204 -0
- graphcraft/stitch/__init__.py +1 -0
- graphcraft/stitch/cli.py +3 -0
- graphcraft/stitch/import_cmd.py +68 -0
- mertcapkin_graphcraft-0.1.1.dist-info/METADATA +237 -0
- mertcapkin_graphcraft-0.1.1.dist-info/RECORD +49 -0
- mertcapkin_graphcraft-0.1.1.dist-info/WHEEL +5 -0
- mertcapkin_graphcraft-0.1.1.dist-info/entry_points.txt +2 -0
- mertcapkin_graphcraft-0.1.1.dist-info/licenses/LICENSE +21 -0
- mertcapkin_graphcraft-0.1.1.dist-info/top_level.txt +1 -0
graphcraft/__init__.py
ADDED
graphcraft/__main__.py
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# GraphCraft slash command
|
|
2
|
+
|
|
3
|
+
You are in a **GraphCraft** project. GraphStack is the **dependency** (cycle/gate).
|
|
4
|
+
|
|
5
|
+
## Read first (parallel)
|
|
6
|
+
|
|
7
|
+
- `orchestrator/GRAPHCRAFT.md` — design lifecycle (primary)
|
|
8
|
+
- `orchestrator/ORCHESTRATOR.md` — GraphStack cycle (dependency, unchanged)
|
|
9
|
+
- `graphcraft.config.yaml`
|
|
10
|
+
- `docs/FLOW.md` — who runs first
|
|
11
|
+
|
|
12
|
+
## Greet
|
|
13
|
+
|
|
14
|
+
`GraphCraft ready.` — not GraphStack ready.
|
|
15
|
+
|
|
16
|
+
## Quick commands
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
graphcraft doctor .
|
|
20
|
+
graphcraft design update .
|
|
21
|
+
python -m graphstack cycle start <id> "<title>"
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
UI tasks: Architect → Design Strategist → Designer → Design Audit → Builder → Visual Review → Reviewer → QA → Ship
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: GraphCraft primary orchestrator overlay — mobile design layer on GraphStack (dependency). Loads WITH graphstack.mdc; overrides greeting and design routing only.
|
|
3
|
+
globs:
|
|
4
|
+
alwaysApply: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# GraphCraft Rules (v0.1) — Primary Orchestrator Overlay
|
|
8
|
+
|
|
9
|
+
This project is **GraphCraft**. GraphStack is a **dependency** (orchestration only).
|
|
10
|
+
GraphStack rules (`graphstack.mdc`) remain active for cycle, gate, and token discipline.
|
|
11
|
+
**Do not skip GraphCraft design phases for UI/mobile tasks.**
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Activation (GraphCraft projects — run WITH GraphStack activation)
|
|
16
|
+
|
|
17
|
+
After GraphStack reads `TOKEN_OPTIMIZER.md` and `GRAPH_REPORT.md`, also read (same session, once):
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
- orchestrator/GRAPHCRAFT.md ← design lifecycle (GraphCraft)
|
|
21
|
+
- graphcraft-out/DESIGN_REPORT.md ← if exists
|
|
22
|
+
- graphcraft.config.yaml ← profile, design_source, stack
|
|
23
|
+
- handoff/AESTHETIC_BRIEF.md ← if design task active
|
|
24
|
+
- handoff/DESIGN_BRIEF.md ← if design task active
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Then greet with **GraphCraft format** (replaces GraphStack step-8 greeting):
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
GraphCraft ready.
|
|
31
|
+
Profile: [mobile-app|mobile-game] | Stack: [active_stack] | Design: [native|stitch|hybrid]
|
|
32
|
+
Design graph: [N nodes] | Code graph: [N nodes] | Board: [N todo / N doing / N done]
|
|
33
|
+
[If doing/]: In progress: [task-id] — resume?
|
|
34
|
+
What are we building?
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## First-turn routing (GraphCraft override)
|
|
40
|
+
|
|
41
|
+
| User intent | Action |
|
|
42
|
+
|-------------|--------|
|
|
43
|
+
| Greeting only | GraphCraft greet → wait |
|
|
44
|
+
| Task with **UI, screens, design, mobile UX, Stitch, style** | GraphCraft greet → GraphStack `cycle start` + ARCHITECT → **then Design Strategist** (do not jump to Builder) |
|
|
45
|
+
| Task **without UI** (API, scripts, docs) | GraphStack flow only — skip design phases |
|
|
46
|
+
|
|
47
|
+
**Embedded goal ≠ build now.** Architect writes BRIEF first (GraphStack contract unchanged).
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Design phases (GraphCraft — required for UI tasks)
|
|
52
|
+
|
|
53
|
+
After Architect BRIEF, before Builder:
|
|
54
|
+
|
|
55
|
+
1. **Design Strategist** → `handoff/AESTHETIC_BRIEF.md` + `research/INSPIRATION.md`
|
|
56
|
+
2. **Designer** → `design/`, `design-system/`, run `python -m graphcraft design update .`
|
|
57
|
+
3. **Design Audit** → `design validate` + `design harmony` → `DESIGN_BRIEF.md` **Ready for Builder**
|
|
58
|
+
4. GraphStack **`cycle enter-builder`** (only after design ready)
|
|
59
|
+
|
|
60
|
+
After Builder, before Code Reviewer:
|
|
61
|
+
|
|
62
|
+
5. **Visual Review** → `.cursor/skills/visual-review/VISUAL_REVIEW.md`
|
|
63
|
+
|
|
64
|
+
Announce: `[GRAPHCRAFT]` when entering design phases. Announce GraphStack roles as usual.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Graph queries
|
|
69
|
+
|
|
70
|
+
| Question type | Command |
|
|
71
|
+
|---------------|---------|
|
|
72
|
+
| Code structure | `python -m graphstack graph query "…"` |
|
|
73
|
+
| Design (screens, tokens, style) | `python -m graphcraft design query "…"` |
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Role skills (GraphCraft)
|
|
78
|
+
|
|
79
|
+
| Role | Skill |
|
|
80
|
+
|------|-------|
|
|
81
|
+
| Design Strategist | `.cursor/skills/design-strategist/DESIGN_STRATEGIST.md` |
|
|
82
|
+
| Designer | `.cursor/skills/designer/DESIGNER.md` |
|
|
83
|
+
| Stitch import | `.cursor/skills/stitch-import/STITCH_IMPORT.md` |
|
|
84
|
+
| Visual Review | `.cursor/skills/visual-review/VISUAL_REVIEW.md` |
|
|
85
|
+
| Mobile app | `.cursor/skills/mobile-app/MOBILE_APP.md` |
|
|
86
|
+
| Mobile game | `.cursor/skills/mobile-game/MOBILE_GAME.md` |
|
|
87
|
+
|
|
88
|
+
GraphStack role skills (Architect, Builder, etc.) unchanged.
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Before UI code edits
|
|
93
|
+
|
|
94
|
+
1. `python -m graphcraft design update .` if design files changed
|
|
95
|
+
2. Screen must exist in design graph
|
|
96
|
+
3. GraphStack: `role=builder` + task in `doing/` (gate unchanged)
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Forbidden
|
|
101
|
+
|
|
102
|
+
- Editing `orchestrator/ORCHESTRATOR.md` or `graphstack.mdc` for GraphCraft features
|
|
103
|
+
- Skipping design phases when task touches UI/mobile screens
|
|
104
|
+
- Greeting with "GraphStack ready" in GraphCraft projects
|
|
105
|
+
|
|
106
|
+
See `docs/FLOW.md` and `docs/ARCHITECTURE.md`.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# DESIGN STRATEGIST Role
|
|
2
|
+
|
|
3
|
+
You research, brainstorm, and select aesthetic direction before Designer works.
|
|
4
|
+
|
|
5
|
+
## Activation
|
|
6
|
+
|
|
7
|
+
1. Read `handoff/BRIEF.md` (functional scope)
|
|
8
|
+
2. Write `handoff/AESTHETIC_BRIEF.md`
|
|
9
|
+
3. Web research → `research/INSPIRATION.md` (patterns, not copies)
|
|
10
|
+
|
|
11
|
+
## Workflow
|
|
12
|
+
|
|
13
|
+
1. Define project identity + target audience
|
|
14
|
+
2. Run ≤5 focused research queries
|
|
15
|
+
3. Propose ≤3 style directions with marketing + usability notes
|
|
16
|
+
4. User selects direction → update `graphcraft.config.yaml` `design.style`
|
|
17
|
+
5. Set AESTHETIC_BRIEF **Ready for Designer**
|
|
18
|
+
|
|
19
|
+
## Output quality
|
|
20
|
+
|
|
21
|
+
- Reference **patterns** (shop layout, onboarding flow), not pixel clones
|
|
22
|
+
- Note accessibility floors (contrast, touch targets)
|
|
23
|
+
- Flag trademark/clone risks explicitly
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# DESIGNER Role
|
|
2
|
+
|
|
3
|
+
You implement design specs — screens, components, tokens. You do not write app logic.
|
|
4
|
+
|
|
5
|
+
## Activation
|
|
6
|
+
|
|
7
|
+
1. Read `graphcraft-out/DESIGN_REPORT.md`
|
|
8
|
+
2. Read `handoff/DESIGN_BRIEF.md` and `graphcraft.config.yaml`
|
|
9
|
+
3. Run `python -m graphcraft design update .`
|
|
10
|
+
|
|
11
|
+
## Do
|
|
12
|
+
|
|
13
|
+
- Write/update `design/screens/*.yaml`, `design-system/components/*.yaml`
|
|
14
|
+
- Normalize tokens in `design-system/tokens.json`
|
|
15
|
+
- Run `design validate` and `design harmony` before handoff
|
|
16
|
+
- Set DESIGN_BRIEF **Status: Ready for Builder**
|
|
17
|
+
|
|
18
|
+
## Don't
|
|
19
|
+
|
|
20
|
+
- Implement platform code (Builder job)
|
|
21
|
+
- Hardcode colors in specs — use token references
|
|
22
|
+
- Skip harmony check on multi-component screens
|
|
23
|
+
|
|
24
|
+
## Stitch mode
|
|
25
|
+
|
|
26
|
+
When `design_source: stitch|hybrid`: curate imported screens, set status approved/rejected in YAML.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# MOBILE APP Skill
|
|
2
|
+
|
|
3
|
+
Active when `graphcraft.config.yaml` → `profile: mobile-app`.
|
|
4
|
+
|
|
5
|
+
Read `packs/mobile-app/STACKS.md` for stack-specific guidance.
|
|
6
|
+
|
|
7
|
+
## Defaults
|
|
8
|
+
|
|
9
|
+
- Safe area + touch targets enforced
|
|
10
|
+
- Navigation: follow design graph `navigates_to`
|
|
11
|
+
- Prefer `active_stack` from config for Builder
|
|
12
|
+
|
|
13
|
+
## Stacks
|
|
14
|
+
|
|
15
|
+
react-native · expo · flutter · swiftui · jetpack-compose · kotlin-multiplatform · ionic · capacitor
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# MOBILE GAME Skill
|
|
2
|
+
|
|
3
|
+
Active when `graphcraft.config.yaml` → `profile: mobile-game`.
|
|
4
|
+
|
|
5
|
+
Read `packs/mobile-game/STACKS.md`.
|
|
6
|
+
|
|
7
|
+
## Scope
|
|
8
|
+
|
|
9
|
+
Meta-UI only: menus, HUD, shop, inventory, dialogs.
|
|
10
|
+
|
|
11
|
+
Gameplay canvas is out of design graph scope for v0.1.
|
|
12
|
+
|
|
13
|
+
## Stacks
|
|
14
|
+
|
|
15
|
+
unity-ugui · unity-ui-toolkit · godot · unreal-umg · defold · cocos
|
|
16
|
+
|
|
17
|
+
## Visual mode
|
|
18
|
+
|
|
19
|
+
Prefer Stitch PNG reference. Token → USS / ScriptableObject themes.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# STITCH IMPORT Skill
|
|
2
|
+
|
|
3
|
+
Import Google Stitch prototypes into GraphCraft design graph.
|
|
4
|
+
|
|
5
|
+
## When
|
|
6
|
+
|
|
7
|
+
`graphcraft.config.yaml` → `design_source: stitch|hybrid`
|
|
8
|
+
|
|
9
|
+
## Steps
|
|
10
|
+
|
|
11
|
+
1. Export from Stitch: DESIGN.md + screens → `.stitch/designs/` (PNG/HTML)
|
|
12
|
+
2. Copy/fill `.stitch/metadata.json` from `metadata.template.json`
|
|
13
|
+
3. `python -m graphcraft stitch import .`
|
|
14
|
+
4. `python -m graphcraft stitch report`
|
|
15
|
+
5. Curator approves screens in design specs
|
|
16
|
+
|
|
17
|
+
## MCP (optional)
|
|
18
|
+
|
|
19
|
+
Configure `@keeponfirst/kof-stitch-mcp` for automated fetch.
|
|
20
|
+
|
|
21
|
+
## Rules
|
|
22
|
+
|
|
23
|
+
- `.stitch/` is read-only reference after import
|
|
24
|
+
- Refinements go in `design/screens/` (hybrid mode)
|
|
25
|
+
- Visual ground truth = PNG files
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# VISUAL REVIEW Role
|
|
2
|
+
|
|
3
|
+
Compare implementation against design ground truth.
|
|
4
|
+
|
|
5
|
+
## Checklist
|
|
6
|
+
|
|
7
|
+
- [ ] Stitch PNG match (if `.stitch/designs/` exists)
|
|
8
|
+
- [ ] Token usage matches design graph (no random hex)
|
|
9
|
+
- [ ] Touch targets ≥ config `design.touch_target_min`
|
|
10
|
+
- [ ] Safe area respected on mobile
|
|
11
|
+
- [ ] `graphcraft design harmony` PASS for reviewed screens
|
|
12
|
+
|
|
13
|
+
## Marketing + usability rubric
|
|
14
|
+
|
|
15
|
+
| Screen type | Marketing weight | Usability weight |
|
|
16
|
+
|-------------|------------------|------------------|
|
|
17
|
+
| shop, onboarding | high | medium |
|
|
18
|
+
| settings, forms | medium | high |
|
|
19
|
+
|
|
20
|
+
Report in `handoff/REVIEW.md` under `## Visual Review`.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.1.1
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"project_id": "your-stitch-project-id",
|
|
3
|
+
"screens": {
|
|
4
|
+
"login": {
|
|
5
|
+
"id": "screen:login",
|
|
6
|
+
"title": "Login",
|
|
7
|
+
"png": "login.png",
|
|
8
|
+
"status": "imported"
|
|
9
|
+
},
|
|
10
|
+
"home": {
|
|
11
|
+
"id": "screen:home",
|
|
12
|
+
"title": "Home",
|
|
13
|
+
"png": "home.png",
|
|
14
|
+
"status": "imported"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"flows": [
|
|
18
|
+
{ "from": "screen:login", "to": "screen:home", "trigger": "login_success" }
|
|
19
|
+
]
|
|
20
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
id: screen:login
|
|
2
|
+
title: Login
|
|
3
|
+
platform: mobile-app
|
|
4
|
+
status: example
|
|
5
|
+
components:
|
|
6
|
+
- component:button-primary
|
|
7
|
+
tokens:
|
|
8
|
+
- spacing.screen.padding
|
|
9
|
+
navigation:
|
|
10
|
+
success: screen:home
|
|
11
|
+
forgot_password: screen:forgot-password
|
|
12
|
+
acceptance:
|
|
13
|
+
touch_target_min: 44
|
|
14
|
+
safe_area: true
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
id: component:button-primary
|
|
2
|
+
label: Button Primary
|
|
3
|
+
collection: buttons
|
|
4
|
+
style_compatibility:
|
|
5
|
+
- style:minimal-dark
|
|
6
|
+
uses_tokens:
|
|
7
|
+
- color.action.primary
|
|
8
|
+
- spacing.button.padding
|
|
9
|
+
- radius.default
|
|
10
|
+
alternatives:
|
|
11
|
+
- component:button-secondary
|
|
12
|
+
when_to_use: Primary CTA, max one per screen
|
|
13
|
+
when_not_to_use: Secondary actions, destructive flows
|
|
14
|
+
harmony_score_with:
|
|
15
|
+
component:card-elevated: 0.9
|
|
16
|
+
states:
|
|
17
|
+
- default
|
|
18
|
+
- pressed
|
|
19
|
+
- disabled
|
|
20
|
+
- loading
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"color": {
|
|
3
|
+
"action": {
|
|
4
|
+
"primary": { "$value": "#6366F1", "$type": "color" },
|
|
5
|
+
"secondary": { "$value": "#8B5CF6", "$type": "color" }
|
|
6
|
+
},
|
|
7
|
+
"bg": {
|
|
8
|
+
"default": { "$value": "#0F172A", "$type": "color" },
|
|
9
|
+
"elevated": { "$value": "#1E293B", "$type": "color" }
|
|
10
|
+
},
|
|
11
|
+
"text": {
|
|
12
|
+
"primary": { "$value": "#F8FAFC", "$type": "color" },
|
|
13
|
+
"muted": { "$value": "#94A3B8", "$type": "color" }
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"spacing": {
|
|
17
|
+
"screen": {
|
|
18
|
+
"padding": { "$value": "16px", "$type": "dimension" }
|
|
19
|
+
},
|
|
20
|
+
"button": {
|
|
21
|
+
"padding": { "$value": "12px", "$type": "dimension" }
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"radius": {
|
|
25
|
+
"default": { "$value": "8px", "$type": "dimension" }
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"color": {
|
|
3
|
+
"action": {
|
|
4
|
+
"primary": { "$value": "#6366F1", "$type": "color" },
|
|
5
|
+
"secondary": { "$value": "#8B5CF6", "$type": "color" }
|
|
6
|
+
},
|
|
7
|
+
"bg": {
|
|
8
|
+
"default": { "$value": "#0F172A", "$type": "color" },
|
|
9
|
+
"elevated": { "$value": "#1E293B", "$type": "color" }
|
|
10
|
+
},
|
|
11
|
+
"text": {
|
|
12
|
+
"primary": { "$value": "#F8FAFC", "$type": "color" },
|
|
13
|
+
"muted": { "$value": "#94A3B8", "$type": "color" }
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"spacing": {
|
|
17
|
+
"screen": {
|
|
18
|
+
"padding": { "$value": "16px", "$type": "dimension" }
|
|
19
|
+
},
|
|
20
|
+
"button": {
|
|
21
|
+
"padding": { "$value": "12px", "$type": "dimension" }
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"radius": {
|
|
25
|
+
"default": { "$value": "8px", "$type": "dimension" }
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# GraphCraft configuration
|
|
2
|
+
# Docs: README_GRAPHCRAFT.md
|
|
3
|
+
|
|
4
|
+
profile: mobile-app # mobile-app | mobile-game
|
|
5
|
+
design_source: native # native | stitch | hybrid
|
|
6
|
+
|
|
7
|
+
stacks:
|
|
8
|
+
mobile_app:
|
|
9
|
+
- react-native
|
|
10
|
+
- expo
|
|
11
|
+
- flutter
|
|
12
|
+
- swiftui
|
|
13
|
+
- jetpack-compose
|
|
14
|
+
- kotlin-multiplatform
|
|
15
|
+
- ionic
|
|
16
|
+
- capacitor
|
|
17
|
+
mobile_game:
|
|
18
|
+
- unity-ugui
|
|
19
|
+
- unity-ui-toolkit
|
|
20
|
+
- godot
|
|
21
|
+
- unreal-umg
|
|
22
|
+
- defold
|
|
23
|
+
- cocos
|
|
24
|
+
|
|
25
|
+
active_stack: react-native # pick one from lists above
|
|
26
|
+
|
|
27
|
+
design:
|
|
28
|
+
style: style:minimal-dark
|
|
29
|
+
token_file: design-system/tokens.json
|
|
30
|
+
touch_target_min: 44
|
|
31
|
+
safe_area: true
|
|
32
|
+
|
|
33
|
+
aesthetic:
|
|
34
|
+
priority: balanced # marketing | usability | balanced
|
|
35
|
+
research_enabled: true
|
|
36
|
+
max_style_directions: 3
|
|
37
|
+
hard_floors:
|
|
38
|
+
contrast_min: 4.5
|
|
39
|
+
|
|
40
|
+
stitch:
|
|
41
|
+
enabled: false
|
|
42
|
+
project_id: ""
|
|
43
|
+
reference_mode: visual # visual | code
|
|
44
|
+
|
|
45
|
+
gates:
|
|
46
|
+
require_design_approval: true
|
|
47
|
+
require_visual_qa: true
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Aesthetic Brief
|
|
2
|
+
|
|
3
|
+
**Date:** YYYY-MM-DD
|
|
4
|
+
**Status:** Draft | Ready for Designer | Complete
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Project identity
|
|
9
|
+
|
|
10
|
+
> One sentence: who is this for, what feeling should it evoke?
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Research scope
|
|
15
|
+
|
|
16
|
+
### Queries (max 5)
|
|
17
|
+
-
|
|
18
|
+
|
|
19
|
+
### References (URLs, patterns — not assets to copy)
|
|
20
|
+
-
|
|
21
|
+
|
|
22
|
+
### Avoid
|
|
23
|
+
- clone / trademark risk
|
|
24
|
+
-
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Style directions (max 3)
|
|
29
|
+
|
|
30
|
+
| ID | Name | Mood | Marketing fit | Usability fit |
|
|
31
|
+
|----|------|------|---------------|---------------|
|
|
32
|
+
| 1 | | | | |
|
|
33
|
+
| 2 | | | | |
|
|
34
|
+
| 3 | | | | |
|
|
35
|
+
|
|
36
|
+
**Selected:** style:...
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Aesthetic priority
|
|
41
|
+
|
|
42
|
+
- [ ] balanced
|
|
43
|
+
- [ ] marketing-first (hero screens)
|
|
44
|
+
- [ ] usability-first (forms, settings)
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Acceptance
|
|
49
|
+
|
|
50
|
+
- [ ] Research saved to `research/INSPIRATION.md`
|
|
51
|
+
- [ ] Style pack chosen in `graphcraft.config.yaml`
|
|
52
|
+
- [ ] Ready for Designer
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Design Brief
|
|
2
|
+
|
|
3
|
+
**Date:** YYYY-MM-DD
|
|
4
|
+
**Status:** Draft | Ready for Builder | In Review
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Screens in scope
|
|
9
|
+
|
|
10
|
+
| Screen ID | Title | Status | Source |
|
|
11
|
+
|-----------|-------|--------|--------|
|
|
12
|
+
| screen:login | Login | approved | native / stitch |
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Style pack
|
|
17
|
+
|
|
18
|
+
- Active: `style:minimal-dark`
|
|
19
|
+
- Tokens: `design-system/tokens.json`
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Component collections
|
|
24
|
+
|
|
25
|
+
- buttons: component:button-primary (alternatives documented in design graph)
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Design graph
|
|
30
|
+
|
|
31
|
+
- Last update: YYYY-MM-DD
|
|
32
|
+
- `graphcraft design validate` → PASS
|
|
33
|
+
- `graphcraft design harmony` → PASS
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Visual ground truth
|
|
38
|
+
|
|
39
|
+
- Stitch PNG: `.stitch/designs/` (if applicable)
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Acceptance (Design Audit)
|
|
44
|
+
|
|
45
|
+
- [ ] All in-scope screens in design graph
|
|
46
|
+
- [ ] No unresolved clashes_with edges on approved screens
|
|
47
|
+
- [ ] DESIGN_BRIEF status → Ready for Builder
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# GRAPHCRAFT Orchestrator Extension
|
|
2
|
+
|
|
3
|
+
**GraphCraft overlay on GraphStack (dependency).**
|
|
4
|
+
GraphStack's `orchestrator/ORCHESTRATOR.md` is **not modified** — read it for cycle/gate mechanics.
|
|
5
|
+
This file extends the lifecycle for **mobile game/app design**.
|
|
6
|
+
|
|
7
|
+
Load order: `TOKEN_OPTIMIZER.md` → `GRAPHCRAFT.md` (this file) → `ORCHESTRATOR.md`
|
|
8
|
+
|
|
9
|
+
Announce: `[GRAPHCRAFT]` when entering design phases.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Primary greeting (overrides GraphStack step 8)
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
GraphCraft ready.
|
|
17
|
+
Profile: … | Design graph: … | Code graph: … | Board: …
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Extended Lifecycle (UI/mobile tasks)
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
ARCHITECT → BRIEF.md (functional) [GraphStack]
|
|
26
|
+
DESIGN STRATEGIST → AESTHETIC_BRIEF.md [GraphCraft]
|
|
27
|
+
DESIGNER/CURATOR → design/, design-system/, .stitch/ [GraphCraft]
|
|
28
|
+
DESIGN AUDIT → validate + harmony → DESIGN_BRIEF [GraphCraft]
|
|
29
|
+
BUILDER → design graph + UI packages [GraphStack + GraphCraft context]
|
|
30
|
+
VISUAL REVIEW → PNG reference vs code [GraphCraft]
|
|
31
|
+
REVIEWER → QA → SHIP [GraphStack unchanged]
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Non-UI tasks: skip GraphCraft phases → GraphStack only.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Mechanical commands
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# GraphCraft
|
|
42
|
+
python -m graphcraft design update .
|
|
43
|
+
python -m graphcraft design validate
|
|
44
|
+
python -m graphcraft design harmony
|
|
45
|
+
python -m graphcraft stitch import .
|
|
46
|
+
python -m graphcraft doctor .
|
|
47
|
+
|
|
48
|
+
# GraphStack (dependency — unchanged)
|
|
49
|
+
python -m graphstack cycle start <id> "<title>"
|
|
50
|
+
python -m graphstack cycle enter-builder <id>
|
|
51
|
+
python -m graphstack cycle enter-reviewer <id>
|
|
52
|
+
python -m graphstack cycle enter-qa <id>
|
|
53
|
+
python -m graphstack cycle enter-ship <id>
|
|
54
|
+
python -m graphstack cycle close <id>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Design Graph First (UI tasks)
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
python -m graphcraft design query "screens"
|
|
63
|
+
python -m graphcraft design query "tokens"
|
|
64
|
+
python -m graphstack graph query "…" # code structure
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Profiles & packs
|
|
70
|
+
|
|
71
|
+
| Profile | Config | Pack doc |
|
|
72
|
+
|---------|--------|----------|
|
|
73
|
+
| mobile-app | `profile: mobile-app` | `packs/mobile-app/STACKS.md` |
|
|
74
|
+
| mobile-game | `profile: mobile-game` | `packs/mobile-game/STACKS.md` |
|
|
75
|
+
|
|
76
|
+
`graphcraft.config.yaml` → `design_source`, `active_stack`, `aesthetic`, `stitch`
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Integration principle
|
|
81
|
+
|
|
82
|
+
GraphCraft **never patches GraphStack**. Overlay files only.
|
|
83
|
+
See `docs/ARCHITECTURE.md` · `docs/FLOW.md` · `docs/GRAPHSTACK.md`
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
*GraphCraft v0.1 — mobile game & app design layer on GraphStack*
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Asset Library
|
|
2
|
+
|
|
3
|
+
Icons, sprites, fonts, audio UI cues.
|
|
4
|
+
|
|
5
|
+
## Manifest example
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
id: assets:icons-minimal
|
|
9
|
+
style_compatibility:
|
|
10
|
+
- style:minimal-dark
|
|
11
|
+
files:
|
|
12
|
+
- path: home.svg
|
|
13
|
+
tags: [navigation, 24px]
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Rules
|
|
17
|
+
|
|
18
|
+
- Link assets to components via design graph `uses_asset` edges
|
|
19
|
+
- Keep style compatibility in manifest
|
|
20
|
+
- Game sprites: separate atlas pipeline (future)
|
|
21
|
+
|
|
22
|
+
v0.1: scaffold — add asset sets per style pack in future cycles.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# UI Core Library
|
|
2
|
+
|
|
3
|
+
Shared UI primitives consumed by mobile app/game implementations.
|
|
4
|
+
|
|
5
|
+
## Structure (expand per cycle)
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
ui-core/
|
|
9
|
+
├── tokens/ # re-export from design-system
|
|
10
|
+
├── rn/
|
|
11
|
+
├── flutter/
|
|
12
|
+
├── swiftui/
|
|
13
|
+
├── compose/
|
|
14
|
+
└── unity/
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Rules
|
|
18
|
+
|
|
19
|
+
- No hardcoded colors — use semantic tokens
|
|
20
|
+
- Each component maps to design graph `component:*` id
|
|
21
|
+
- Register new components in `design-system/components/*.yaml`
|
|
22
|
+
|
|
23
|
+
v0.1: scaffold only — implement stack modules in future cycles.
|