@mohammadhprp/system-prompt 0.12.1 → 0.12.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.
Files changed (62) hide show
  1. package/framework/agents/README.md +0 -1
  2. package/framework/commands/mr.md +8 -9
  3. package/framework/mcps/README.md +0 -3
  4. package/framework/skills/README.md +3 -2
  5. package/framework/skills/glab/SKILL.md +222 -0
  6. package/framework/skills/glab/references/commands-detailed.md +616 -0
  7. package/framework/skills/glab/references/quick-reference.md +145 -0
  8. package/framework/skills/glab/references/troubleshooting.md +669 -0
  9. package/framework/skills/improve/SKILL.md +137 -0
  10. package/framework/skills/improve/examples.md +19 -0
  11. package/framework/skills/improve/references/audit-playbook.md +130 -0
  12. package/framework/skills/improve/references/closing-the-loop.md +96 -0
  13. package/framework/skills/improve/references/plan-template.md +197 -0
  14. package/framework/skills/jira-cli/SKILL.md +260 -0
  15. package/framework/skills/jira-cli/references/commands-detailed.md +268 -0
  16. package/framework/skills/jira-cli/references/quick-reference.md +111 -0
  17. package/framework/skills/jira-cli/references/troubleshooting.md +114 -0
  18. package/framework/styles/README.md +9 -4
  19. package/framework/styles/factory/DESIGN.md +360 -0
  20. package/framework/styles/factory/README.md +32 -0
  21. package/framework/styles/factory/assets/preview.jpg +0 -0
  22. package/framework/styles/huly/DESIGN.md +449 -0
  23. package/framework/styles/huly/README.md +32 -0
  24. package/framework/styles/huly/assets/preview.jpg +0 -0
  25. package/framework/styles/notion/DESIGN.md +423 -0
  26. package/framework/styles/notion/README.md +32 -0
  27. package/framework/styles/notion/assets/preview.jpg +0 -0
  28. package/package.json +1 -1
  29. package/src/catalog.js +6 -6
  30. package/framework/agents/backend-architect.md +0 -146
  31. package/framework/mcps/github-mcp/README.md +0 -51
  32. package/framework/mcps/github-mcp/capabilities.md +0 -83
  33. package/framework/mcps/github-mcp/configs/.env.example +0 -1
  34. package/framework/mcps/github-mcp/configs/opencode.json +0 -13
  35. package/framework/mcps/github-mcp/install.md +0 -60
  36. package/framework/mcps/github-mcp/troubleshooting.md +0 -79
  37. package/framework/mcps/gitlab-mcp/README.md +0 -53
  38. package/framework/mcps/gitlab-mcp/capabilities.md +0 -216
  39. package/framework/mcps/gitlab-mcp/configs/.env.example +0 -2
  40. package/framework/mcps/gitlab-mcp/configs/opencode.json +0 -13
  41. package/framework/mcps/gitlab-mcp/install.md +0 -99
  42. package/framework/mcps/gitlab-mcp/troubleshooting.md +0 -116
  43. package/framework/mcps/jira-mcp/README.md +0 -52
  44. package/framework/mcps/jira-mcp/capabilities.md +0 -79
  45. package/framework/mcps/jira-mcp/configs/.env.example +0 -2
  46. package/framework/mcps/jira-mcp/configs/opencode.json +0 -13
  47. package/framework/mcps/jira-mcp/install.md +0 -94
  48. package/framework/mcps/jira-mcp/troubleshooting.md +0 -113
  49. package/framework/skills/gitlab-mcp/SKILL.md +0 -83
  50. package/framework/skills/gitlab-mcp/examples.md +0 -31
  51. package/framework/skills/gitlab-mcp/references/code-review.md +0 -110
  52. package/framework/skills/gitlab-mcp/references/issues.md +0 -141
  53. package/framework/skills/gitlab-mcp/references/merge-requests.md +0 -120
  54. package/framework/skills/gitlab-mcp/references/pipelines.md +0 -67
  55. package/framework/skills/gitlab-mcp/references/search.md +0 -17
  56. package/framework/skills/gitlab-mcp/references/webhooks.md +0 -32
  57. package/framework/skills/gitlab-mcp/references/work-items.md +0 -50
  58. package/framework/skills/jira-mcp/SKILL.md +0 -57
  59. package/framework/skills/jira-mcp/examples.md +0 -31
  60. package/framework/skills/jira-mcp/references/comments.md +0 -27
  61. package/framework/skills/jira-mcp/references/issues.md +0 -97
  62. package/framework/skills/jira-mcp/references/projects.md +0 -39
@@ -0,0 +1,114 @@
1
+ # Jira CLI Troubleshooting
2
+
3
+ Common `jira` CLI error scenarios and solutions.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Command not found](#command-not-found)
8
+ - [Authentication errors (401/403)](#authentication-errors-401403)
9
+ - [Configuration problems](#configuration-problems)
10
+ - [Command hangs in scripts](#command-hangs-in-scripts)
11
+ - [Transition errors](#transition-errors)
12
+ - [Empty or wrong issue lists](#empty-or-wrong-issue-lists)
13
+ - [Epic or issue creation fails on-premises](#epic-or-issue-creation-fails-on-premises)
14
+ - [Custom fields not applied](#custom-fields-not-applied)
15
+ - [Multiple Jira instances or projects](#multiple-jira-instances-or-projects)
16
+ - [View command pager issues](#view-command-pager-issues)
17
+
18
+ ## Command not found
19
+
20
+ **Symptom:** `command not found: jira`
21
+
22
+ **Fix:**
23
+ 1. Install jira-cli: download a binary from the [releases page](https://github.com/ankitpokhrel/jira-cli/releases), or use Homebrew (`brew install ankitpokhrel/jira-cli/jira-cli`)
24
+ 2. Verify: `jira --version`
25
+
26
+ ## Authentication errors (401/403)
27
+
28
+ **Symptom:** API errors like `GET .../myself: 401 Unauthorized` or 403 on every command.
29
+
30
+ **Fix:**
31
+ 1. Verify the token is exported: `echo "${JIRA_API_TOKEN:?not set}"`
32
+ 2. Jira Cloud: use an API token from https://id.atlassian.com/manage-profile/security/api-tokens (your email is the login; basic auth is the default)
33
+ 3. On-premises with a Personal Access Token: set `JIRA_AUTH_TYPE=bearer`
34
+ 4. On-premises with login credentials: export the password as `JIRA_API_TOKEN` (basic auth, the default)
35
+ 5. Re-check with `jira me`
36
+ 6. Tokens can also be supplied via `.netrc` or `keychain` instead of the environment variable
37
+
38
+ ## Configuration problems
39
+
40
+ **Symptom:** `Please select installation type`, or prompts for server/project on every command.
41
+
42
+ **Fix:**
43
+ 1. Run `jira init` and complete the wizard (installation type Cloud/Local, auth type, login, project, board)
44
+ 2. To start over, re-run `jira init` and answer the regeneration prompt
45
+ 3. Confirm the config path with `jira --help`; override it per command with `-c /path/to/config.yaml` or `JIRA_CONFIG_FILE`
46
+
47
+ ## Command hangs in scripts
48
+
49
+ **Symptom:** `jira issue list` (and other list commands) never returns in CI or non-interactive shells.
50
+
51
+ **Cause:** list and create commands open an interactive TUI by default.
52
+
53
+ **Fix:**
54
+ 1. Add `--plain` (or `--table`, `--raw`, `--csv`) to list commands
55
+ 2. Add `--no-input` and all required flags to create/edit/move/assign commands
56
+ 3. Pipe bodies via stdin instead of letting them prompt: `echo "Body" | jira issue create -s"Summary" -tTask --no-input`
57
+
58
+ ## Transition errors
59
+
60
+ **Symptom:** `jira issue move ISSUE-1 "Done"` fails or reports an unknown transition.
61
+
62
+ **Fix:**
63
+ 1. Status names are case-sensitive and must match the workflow exactly (e.g. `"In Progress"`, not `in progress`)
64
+ 2. Run `jira issue move` with no arguments to list valid transitions for the issue
65
+ 3. If a workflow field (comment, resolution, assignee) is rejected during a move, the Jira workflow does not allow it on that transition — drop the flag or ask an admin to enable it
66
+
67
+ ## Empty or wrong issue lists
68
+
69
+ **Symptom:** `jira issue list` returns nothing, or issues from the wrong project.
70
+
71
+ **Fix:**
72
+ 1. The CLI is scoped to the project/board chosen during `jira init` — re-run `jira init` to change it
73
+ 2. Target another project for a single command: `jira issue list -pXYZ --plain`
74
+ 3. Reset filters one at a time to isolate the culprit (`-a`, `-s`, `--created`, ...)
75
+ 4. Sprint views only show the 25 most recent sprints; older sprints are not listed
76
+
77
+ ## Epic or issue creation fails on-premises
78
+
79
+ **Symptom:** Creation fails or misbehaves on a non-English Jira Server/Data Center installation.
80
+
81
+ **Cause:** older Jira APIs do not return untranslated issue type names.
82
+
83
+ **Fix:** manually fill `epic.name`, `epic.link`, and `issue.types.*.handle` fields in the generated config file.
84
+
85
+ ## Custom fields not applied
86
+
87
+ **Symptom:** `--custom "key=value"` appears to be ignored or errors.
88
+
89
+ **Fix:**
90
+ 1. Custom fields must be configured in the generated config file to map names to field IDs
91
+ 2. See the jira-cli discussion on custom fields for the exact config format
92
+ 3. Validate the value type matches the field (text, option, user, ...)
93
+
94
+ ## Multiple Jira instances or projects
95
+
96
+ **Symptom:** Need to work against two servers or project contexts.
97
+
98
+ **Fix:**
99
+ 1. Generate a config per context with `jira init`
100
+ 2. Switch with `jira issue list -c ./other_config.yaml` or `export JIRA_CONFIG_FILE=./other_config.yaml`
101
+
102
+ ## View command pager issues
103
+
104
+ **Symptom:** `jira issue view` output is truncated or opens an unwanted pager.
105
+
106
+ **Fix:** `view` uses `less` by default; pipe output (`jira issue view ISSUE-1 | cat`) or configure a custom pager when embedding in scripts.
107
+
108
+ ## mtls authentication issues
109
+
110
+ **Symptom:** Certificate errors with auth type `mtls`.
111
+
112
+ **Fix:**
113
+ 1. Re-run `jira init`, select installation type `Local`, auth type `mtls`, and provide the CA cert, client key, and client cert
114
+ 2. If `JIRA_API_TOKEN` is set, it is used together with `mtls`
@@ -6,8 +6,11 @@ A curated catalog of design system references from [Refero Styles](https://style
6
6
 
7
7
  | Style | Description | Preview |
8
8
  | --- | --- | --- |
9
- | [Linear](./linear/README.md) | Midnight precision instrumentnear-black surfaces, acid-lime accent, tight Inter typography. | ![Linear preview](https://images.refero.design/styles/refero.design/image/eee18c0c-a85f-4a66-83f6-f9f38d284825.jpg) |
10
- | [Raycast](./raycast/README.md) | Midnight command center, coral neon — almost-black canvas, warm coral brand accent, glass navigation. | ![Raycast preview](https://images.refero.design/styles/refero.design/image/ee40e139-0b24-47a0-9ea0-98372d317c5b.jpg) |
9
+ | [Factory](./factory/README.md) | Terminal war roomstark black canvas, light figure-ground cards, and restrained orange/green data signals. | ![Factory preview](./factory/assets/preview.jpg) |
10
+ | [Huly](./huly/README.md) | Midnight observatory violet-to-coral aurora hero, dark productivity surfaces, and pill-shaped controls. | ![Huly preview](./huly/assets/preview.jpg) |
11
+ | [Linear](./linear/README.md) | Midnight precision instrument — near-black surfaces, acid-lime accent, tight Inter typography. | ![Linear preview](./linear/assets/preview.jpg) |
12
+ | [Notion](./notion/README.md) | Warm paper notebook — off-white canvas, editorial typography, blue primary action, and playful accent panels. | ![Notion preview](./notion/assets/preview.jpg) |
13
+ | [Raycast](./raycast/README.md) | Midnight command center, coral neon — almost-black canvas, warm coral brand accent, glass navigation. | ![Raycast preview](./raycast/assets/preview.jpg) |
11
14
 
12
15
  ## How Styles Are Organized
13
16
 
@@ -15,7 +18,9 @@ Each style entry follows this structure:
15
18
 
16
19
  ```text
17
20
  styles/<style-name>/
18
- └── README.md # Full design system reference: palette, typography, spacing, components, tokens
21
+ ├── README.md # Concise style overview and implementation guidelines
22
+ ├── DESIGN.md # Full design system reference: palette, typography, spacing, components, tokens
23
+ └── assets/ # Preview images and other style assets, when provided
19
24
  ```
20
25
 
21
26
  ## How to Use a Style
@@ -32,4 +37,4 @@ All styles are sourced from [Refero Styles](https://styles.refero.design/) — a
32
37
  ## Related Repository Areas
33
38
 
34
39
  - [`skills/`](../skills/) contains task-specific procedures for AI coding agents.
35
- - [`references/standards/`](../references/standards/) contains canonical engineering rules.
40
+ - [`references/standards/`](../references/standards/) contains canonical engineering rules.
@@ -0,0 +1,360 @@
1
+ # Factory — Style Reference
2
+ > Terminal war room at midnight. Factory is a stark black control surface where a single white card lands like a flashlit dispatch — the only object in the room is the work itself.
3
+
4
+ **Theme:** dark
5
+
6
+ Factory operates as a terminal war room: deep black canvas, weight-400 Geist type pressed tight with negative tracking, and generous negative space that lets two functional accents — signal orange and metric green — speak above the noise. The signature move is the light card floating on near-black ground (#eeeeee panels on #101010 canvas), creating stark figure/ground contrast rather than soft elevation. Almost all interaction is carried by monochrome surfaces; chromatic color is reserved for live data states and status pulses, never decoration. Components sit flat with minimal radii, thin 1px borders, and zero shadow dependency — the design earns its depth through contrast and spacing rhythm, not blur or glow.
7
+
8
+ ## Tokens — Colors
9
+
10
+ | Name | Value | Token | Role |
11
+ |------|-------|-------|------|
12
+ | Obsidian Canvas | `#101010` | `--color-obsidian-canvas` | Page background, footer base — the void everything else is measured against |
13
+ | Carbon Lift | `#1d1a18` | `--color-carbon-lift` | Raised dark surfaces, nav wells, button fills — one step up from canvas for interactive depth |
14
+ | Ash Stroke | `#3d3a39` | `--color-ash-stroke` | Hairline borders, ghost button outlines, separator lines |
15
+ | Graphite Mid | `#4d4947` | `--color-graphite-mid` | Mid-tone fills for chart bodies, secondary surfaces, neutral data visualization |
16
+ | Warm Granite | `#8a8380` | `--color-warm-granite` | Muted body text, secondary copy, inactive labels — warm gray to soften the black |
17
+ | Pale Stone | `#b8b3b0` | `--color-pale-stone` | Tertiary text, section eyebrows, subdued supporting copy |
18
+ | Bone | `#eeeeee` | `--color-bone` | Primary text, light card surfaces, the single bright figure on dark ground |
19
+ | Chalk | `#fafafa` | `--color-chalk` | High-emphasis light button fill, log-in button, elevated neutral surface |
20
+ | Signal Orange | `#ee6018` | `--color-signal-orange` | Orange decorative accent for icons, marks, and small graphic details |
21
+ | Metric Green | `#a0ca92` | `--color-metric-green` | Green decorative accent for icons, marks, and small graphic details |
22
+
23
+ ## Tokens — Typography
24
+
25
+ ### Geist — All interface text — body, headings, buttons, nav, hero. Used at weight 400 almost universally; weight 500 is reserved for emphasis (e.g. footer heading). The flat 400-only treatment is a signature: authority is implied by size and tracking, not by bold weight. · `--font-geist`
26
+ - **Substitute:** Inter, system-ui
27
+ - **Weights:** 400, 500
28
+ - **Sizes:** 12, 14, 16, 36, 44, 72
29
+ - **Line height:** 1.0–1.5
30
+ - **Letter spacing:** -0.0400em, -0.0310em, -0.0250em
31
+ - **Role:** All interface text — body, headings, buttons, nav, hero. Used at weight 400 almost universally; weight 500 is reserved for emphasis (e.g. footer heading). The flat 400-only treatment is a signature: authority is implied by size and tracking, not by bold weight.
32
+
33
+ ### Geist Mono — Captions, labels, status tags, metric units — always uppercase 12px with tight tracking. Carries the 'terminal' voice that distinguishes engineering surfaces from marketing surfaces. · `--font-geist-mono`
34
+ - **Substitute:** JetBrains Mono, IBM Plex Mono, ui-monospace
35
+ - **Weights:** 400
36
+ - **Sizes:** 12, 14, 16
37
+ - **Line height:** 1.0–1.2
38
+ - **Letter spacing:** -0.0200em
39
+ - **Role:** Captions, labels, status tags, metric units — always uppercase 12px with tight tracking. Carries the 'terminal' voice that distinguishes engineering surfaces from marketing surfaces.
40
+
41
+ ### Type Scale
42
+
43
+ | Role | Size | Line Height | Letter Spacing | Token |
44
+ |------|------|-------------|----------------|-------|
45
+ | caption | 12px | 1 | -0.24px | `--text-caption` |
46
+ | body-sm | 14px | 1.43 | — | `--text-body-sm` |
47
+ | body | 16px | 1.5 | — | `--text-body` |
48
+ | heading | 36px | 1.1 | -1.12px | `--text-heading` |
49
+ | heading-lg | 44px | 1.12 | -1.1px | `--text-heading-lg` |
50
+ | display | 72px | 1 | -2.88px | `--text-display` |
51
+
52
+ ## Tokens — Spacing & Shapes
53
+
54
+ **Base unit:** 8px
55
+
56
+ **Density:** comfortable
57
+
58
+ ### Spacing Scale
59
+
60
+ | Name | Value | Token |
61
+ |------|-------|-------|
62
+ | 8 | 8px | `--spacing-8` |
63
+ | 16 | 16px | `--spacing-16` |
64
+ | 24 | 24px | `--spacing-24` |
65
+ | 32 | 32px | `--spacing-32` |
66
+ | 40 | 40px | `--spacing-40` |
67
+ | 56 | 56px | `--spacing-56` |
68
+ | 80 | 80px | `--spacing-80` |
69
+ | 96 | 96px | `--spacing-96` |
70
+ | 120 | 120px | `--spacing-120` |
71
+
72
+ ### Border Radius
73
+
74
+ | Element | Value |
75
+ |---------|-------|
76
+ | nav | 3px |
77
+ | cards | 10px |
78
+ | buttons | 3px |
79
+ | largePanels | 20px |
80
+
81
+ ### Layout
82
+
83
+ - **Page max-width:** 1200px
84
+ - **Section gap:** 96px
85
+ - **Card padding:** 24px
86
+ - **Element gap:** 24px
87
+
88
+ ## Components
89
+
90
+ ### Top Navigation Bar
91
+ **Role:** Persistent header across all pages
92
+
93
+ Transparent over #101010 canvas. Height ~64px. Left-aligned wordmark 'FACTORY' in #eeeeee, 12px Geist Mono uppercase, letter-spacing wide. Nav links (Product, Enterprise, Pricing, News, Company, Careers) in #eeeeee at 14px Geist weight 400, uppercase. Log In = #fafafa fill, 3px radius, #101010 text, 0 14px padding. Contact Sales = ghost text link with arrow, transparent fill, 1px #3d3a39 border, 0px radius, 24px vertical padding.
94
+
95
+ ### Dark Filled Button
96
+ **Role:** Primary interactive control in dark contexts
97
+
98
+ Background #1f1d1c, text #eeeeee, 3px border-radius, 0 14px padding, Geist 14px weight 400. No border. Used for actions that commit within a dark surface.
99
+
100
+ ### Light Filled Button (Log In)
101
+ **Role:** High-emphasis auth trigger
102
+
103
+ Background #fafafa, text #eeeeee (note: on the light fill, text is inverted to dark in practice — #101010), 3px border-radius, 0 14px padding. The only chromatic-contrast button in the system; appears once in the nav.
104
+
105
+ ### Ghost Text Link
106
+ **Role:** Secondary navigation, in-text links, 'Read More' affordances
107
+
108
+ Transparent background, 1px #3d3a39 border, 0px radius (flat), 24px vertical padding, #eeeeee text. Behaves like a typographic button — no fill ever appears on hover, only text/border color shift to #fafafa.
109
+
110
+ ### Light Surface Card
111
+ **Role:** Featured content panels, CTAs, case studies — the figure on dark ground
112
+
113
+ Background #eeeeee, 10px border-radius, 24px padding all sides, no shadow. Contains dark text (#101010 or #060505) inside. Often carries a subtle grain/noise texture overlay. This is the system's primary way to create visual hierarchy on dark pages.
114
+
115
+ ### Dashboard Frame
116
+ **Role:** Product hero — the live software factory preview
117
+
118
+ macOS window chrome (traffic-light dots) on a #0d0d0d panel with 10px radius. Internal content is a dark grid of metric tiles with 1px #1d1a18 dividers. Header bar: dark fill, Geist Mono 12px uppercase for window title, status dot in #ee6018.
119
+
120
+ ### Metric Tile
121
+ **Role:** Individual data cell inside the dashboard
122
+
123
+ No background, 1px #1d1a18 hairline divider, 20px padding. Label: Geist Mono 12px uppercase #b8b3b0, tracking -0.24px. Value: Geist 36px weight 400, #eeeeee, tracking -1.12px. Sparkline below: 40px tall, 1px stroke in #ee6018 or #a0ca92.
124
+
125
+ ### CTA Section Card
126
+ **Role:** Conversion closer at page bottom
127
+
128
+ Light card (#eeeeee) ~480px wide, 10px radius, 24px padding, optional grain texture. Eyebrow: Geist Mono 12px uppercase, #ee6018 dot + #101010 text. Headline: Geist 36px weight 400, #101010. CTA: dark filled button using #101010 fill, #eeeeee text, 3px radius.
129
+
130
+ ### Status Pulse
131
+ **Role:** Inline 'live' indicator on logos, avatars, section headers
132
+
133
+ 6px filled circle in #ee6018 with optional 1px stroke. Sits immediately before label text. No animation required, but pairs with marquee/animation in the marquee logo strip.
134
+
135
+ ### Logo Strip (Trust Bar)
136
+ **Role:** Social proof band beneath hero
137
+
138
+ Single row of partner wordmarks on #101010 canvas, all rendered in #8a8380 at consistent visual weight. No card backgrounds, no dividers — just the wordmarks floating in negative space. Separated from surrounding sections by 96px vertical breathing room.
139
+
140
+ ### Feature Card Row
141
+ **Role:** Multi-card sections explaining product capabilities
142
+
143
+ Dark cards (transparent on #101010) with 1px #1d1a18 hairline border, 10px radius, 20px padding. 'Read More →' ghost link in footer. No card background fill — the card is implied by the border, not the surface.
144
+
145
+ ### Footer
146
+ **Role:** Site footer with link columns and brand mark
147
+
148
+ Background #101010, 96px+ vertical padding. Headings: Geist Mono 12px uppercase #eeeeee. Links: 14px Geist weight 400 #8a8380. No dividers between columns — generous column gap (24–36px) does the separation.
149
+
150
+ ## Do's and Don'ts
151
+
152
+ ### Do
153
+ - Keep the canvas #101010 on every section. Light cards (#eeeeee) are the only objects allowed to be bright.
154
+ - Use Geist 400 for everything. Reach for weight 500 only when a label must dominate a dense surface (footer headings, key CTAs).
155
+ - Apply negative letter-spacing proportionally to size: -0.04em at 72px, -0.025em at 44px, -0.02em at 12px. Display type earns its weight through tightness, not boldness.
156
+ - Reserve #ee6018 for live status, build-state indicators, and accent strokes in data charts. Never use it as a button fill.
157
+ - Set border-radius to 3px on buttons and nav elements, 10px on cards, 20px on the largest panels. Do not round corners more than this — the system is not soft.
158
+ - Build depth through #eeeeee-on-#101010 contrast and 96px+ section gaps. Do not introduce drop shadows or blur to fake elevation.
159
+ - Use Geist Mono 12px uppercase for eyebrows, status labels, and column headers. This is the system's secondary voice and the fastest way to signal 'instrument, not marketing'.
160
+
161
+ ### Don't
162
+ - Do not introduce additional accent colors. The palette is two neutrals (#101010, #eeeeee), one warm gray for muted text (#8a8380), and two functional accents (#ee6018, #a0ca92). Anything else is noise.
163
+ - Do not use weight 600+ or bold for headings. The system speaks at weight 400 with tight tracking — bolding breaks the voice.
164
+ - Do not put #ee6018 or #a0ca92 on button backgrounds, card surfaces, or large text fills. They are data-voice colors, not chrome colors.
165
+ - Do not use line-height above 1.5. Display sizes use lh=1; body sits at 1.5. Anything looser makes the page feel editorial rather than technical.
166
+ - Do not add drop shadows, glows, or blurs to cards, buttons, or modals. The system's elevation is contrast, not depth-of-field.
167
+ - Do not mix in serif typefaces or display fonts. Geist and Geist Mono only.
168
+ - Do not fill buttons with brand color. The primary action is a neutral dark fill (#1f1d1c) or a neutral light fill (#fafafa) — chromatic CTAs would break the monochrome chrome.
169
+
170
+ ## Surfaces
171
+
172
+ | Level | Name | Value | Purpose |
173
+ |-------|------|-------|---------|
174
+ | 0 | Obsidian Canvas | `#101010` | Page base, hero, all non-card sections |
175
+ | 1 | Carbon Lift | `#1d1a18` | Nav well, inline buttons, subtle panel elevation |
176
+ | 2 | Bone Card | `#eeeeee` | Light cards on dark ground — the signature figure/ground move |
177
+ | 3 | Chalk Elevated | `#fafafa` | Light button fill, top of the light surface stack |
178
+
179
+ ## Elevation
180
+
181
+ No shadows. Depth is built through figure/ground contrast — a #eeeeee card landing on a #101010 canvas does the work a drop shadow would do in other systems. The only box-shadow token observed is a 1px hairline at near-black, never a diffuse glow. This keeps the interface flat and instrument-like.
182
+
183
+ ## Imagery
184
+
185
+ Imagery is minimal and product-led. The dominant visual is a photorealistic macOS dashboard screenshot serving as the hero — a real-feeling terminal panel with traffic-light chrome, monospaced column headers, and live sparklines in orange and green. There is no lifestyle photography, no people, no abstract gradients. Decorative texture on light cards is a subtle film-grain noise overlay, not an illustration. Logos in the trust bar are rendered as monochrome wordmarks, not as color photos. The brand relies on UI-in-UI: showing the product is the imagery.
186
+
187
+ ## Layout
188
+
189
+ Full-bleed #101010 canvas at all times — no light body background. Max content width ~1200px, centered. Hero is a 2-column split: left third holds the headline + supporting copy + button row, right two-thirds holds the dashboard screenshot at near-1:1 scale. Section rhythm: dark band → logo strip → dark band with feature cards → dark band with CTA card. Vertical spacing between sections is 96px+ — the page breathes. Cards in grid layouts are separated by 24px gaps, never touching. Navigation is a single sticky top bar, no sidebar, no mega-menu — the surface stays uncluttered.
190
+
191
+ ## Agent Prompt Guide
192
+
193
+ **Quick Color Reference**
194
+ - canvas: #101010
195
+ - text: #eeeeee
196
+ - muted text: #8a8380
197
+ - card surface: #eeeeee
198
+ - accent (live status / data signal): #ee6018
199
+ - accent (positive metric / trend): #a0ca92
200
+ - primary action: #1d1a18 (filled action)
201
+
202
+ **Example Component Prompts**
203
+ 1. *Hero section*: Full-bleed #101010 background, max-width 1200px centered. Headline at 72px Geist weight 400, #eeeeee, letter-spacing -2.88px, line-height 1. Supporting copy at 16px Geist weight 400, #8a8380. Two buttons inline: a dark filled button (#1f1d1c, #eeeeee text, 3px radius, 0 14px padding) followed by a ghost link with arrow (transparent, 1px #3d3a39 border, 0px radius, 24px vertical padding).
204
+ 2. Create a Primary Action Button: #1d1a18 background, #eeeeee text, 9999px radius, compact pill padding. Use this filled treatment for the main CTA.
205
+ 3. *Dashboard metric tile*: no background, 1px #1d1a18 bottom border, 20px padding. Label: Geist Mono 12px uppercase #b8b3b0. Value: Geist 36px weight 400, #eeeeee, letter-spacing -1.12px. Sparkline: 40px tall, 1px stroke, color #ee6018 (negative trend) or #a0ca92 (positive trend).
206
+ 4. *Trust logo strip*: full-width #101010 band, 96px vertical padding, single row of 8 partner wordmarks rendered in #8a8380, evenly distributed with 24px+ gaps. No card backgrounds, no dividers.
207
+ 5. *Top nav bar*: transparent on #101010, ~64px tall. Wordmark left: 'FACTORY' Geist Mono 12px uppercase #eeeeee. Nav center/right: Product, Enterprise, Pricing, News, Company, Careers in Geist 14px weight 400 #eeeeee uppercase. Log In button: #fafafa fill, #101010 text, 3px radius. Contact Sales: ghost text link with arrow.
208
+
209
+ ## Motion Philosophy
210
+
211
+ Transitions are short and mechanical: 0.15s–0.2s with cubic-bezier(0.4, 0, 0.2, 1) easing — the feel of a CLI tool, not a marketing site. Color, background-color, border-color, and stroke all transition together so state changes feel like a single switch flipping, not a layered animation. Named motion (marquee-scroll, sfDashboardFrameIn) appears sparingly: a slow logo marquee and a single dashboard entrance. Avoid spring physics, parallax, or scroll-driven effects — the surface should feel still and precise.
212
+
213
+ ## Voice & Type Treatment
214
+
215
+ Two voices, one family. Geist 400 carries all marketing and body copy — flat, calm, undecorated. Geist Mono 12px uppercase carries all instrument labels: column headers, status tags, 'BUILD WITH US', nav items. This split is structural: when a user sees Mono, they know they are looking at a system surface, not a page surface. Maintain this discipline even when extending the product.
216
+
217
+ ## Similar Brands
218
+
219
+ - **Linear** — Same monochrome-dark canvas, weight-400 display type with tight negative tracking, and one restrained accent (Linear's purple vs Factory's orange) reserved for state and status, never decoration.
220
+ - **Vercel** — Identical figure/ground strategy: pitch-black canvas, one bright card or screenshot as hero, Geist-family type at flat weight, no drop shadows — depth earned through contrast.
221
+ - **Resend** — Shares the terminal-warm aesthetic — warm grays (#8a8380 class) instead of cold, Geist Mono labels, minimal radii (3–10px), and chromatic accents used only as functional signal in product UI.
222
+ - **Cursor** — Developer-tool dark surface with Geist-weight typography, dashboard hero pattern showing the product in a windowed UI, and a single warm accent for active states.
223
+ - **Railway** — Same instrument-panel sensibility — dark canvas, monospaced eyebrows, metric tiles with live data, and an anti-decorative stance that treats color as data not chrome.
224
+
225
+ ## Quick Start
226
+
227
+ ### CSS Custom Properties
228
+
229
+ ```css
230
+ :root {
231
+ /* Colors */
232
+ --color-obsidian-canvas: #101010;
233
+ --color-carbon-lift: #1d1a18;
234
+ --color-ash-stroke: #3d3a39;
235
+ --color-graphite-mid: #4d4947;
236
+ --color-warm-granite: #8a8380;
237
+ --color-pale-stone: #b8b3b0;
238
+ --color-bone: #eeeeee;
239
+ --color-chalk: #fafafa;
240
+ --color-signal-orange: #ee6018;
241
+ --color-metric-green: #a0ca92;
242
+
243
+ /* Typography — Font Families */
244
+ --font-geist: 'Geist', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
245
+ --font-geist-mono: 'Geist Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
246
+
247
+ /* Typography — Scale */
248
+ --text-caption: 12px;
249
+ --leading-caption: 1;
250
+ --tracking-caption: -0.24px;
251
+ --text-body-sm: 14px;
252
+ --leading-body-sm: 1.43;
253
+ --text-body: 16px;
254
+ --leading-body: 1.5;
255
+ --text-heading: 36px;
256
+ --leading-heading: 1.1;
257
+ --tracking-heading: -1.12px;
258
+ --text-heading-lg: 44px;
259
+ --leading-heading-lg: 1.12;
260
+ --tracking-heading-lg: -1.1px;
261
+ --text-display: 72px;
262
+ --leading-display: 1;
263
+ --tracking-display: -2.88px;
264
+
265
+ /* Typography — Weights */
266
+ --font-weight-regular: 400;
267
+ --font-weight-medium: 500;
268
+
269
+ /* Spacing */
270
+ --spacing-unit: 8px;
271
+ --spacing-8: 8px;
272
+ --spacing-16: 16px;
273
+ --spacing-24: 24px;
274
+ --spacing-32: 32px;
275
+ --spacing-40: 40px;
276
+ --spacing-56: 56px;
277
+ --spacing-80: 80px;
278
+ --spacing-96: 96px;
279
+ --spacing-120: 120px;
280
+
281
+ /* Layout */
282
+ --page-max-width: 1200px;
283
+ --section-gap: 96px;
284
+ --card-padding: 24px;
285
+ --element-gap: 24px;
286
+
287
+ /* Border Radius */
288
+ --radius-sm: 3px;
289
+ --radius-lg: 10px;
290
+ --radius-2xl: 20px;
291
+
292
+ /* Named Radii */
293
+ --radius-nav: 3px;
294
+ --radius-cards: 10px;
295
+ --radius-buttons: 3px;
296
+ --radius-largepanels: 20px;
297
+
298
+ /* Surfaces */
299
+ --surface-obsidian-canvas: #101010;
300
+ --surface-carbon-lift: #1d1a18;
301
+ --surface-bone-card: #eeeeee;
302
+ --surface-chalk-elevated: #fafafa;
303
+ }
304
+ ```
305
+
306
+ ### Tailwind v4
307
+
308
+ ```css
309
+ @theme {
310
+ /* Colors */
311
+ --color-obsidian-canvas: #101010;
312
+ --color-carbon-lift: #1d1a18;
313
+ --color-ash-stroke: #3d3a39;
314
+ --color-graphite-mid: #4d4947;
315
+ --color-warm-granite: #8a8380;
316
+ --color-pale-stone: #b8b3b0;
317
+ --color-bone: #eeeeee;
318
+ --color-chalk: #fafafa;
319
+ --color-signal-orange: #ee6018;
320
+ --color-metric-green: #a0ca92;
321
+
322
+ /* Typography */
323
+ --font-geist: 'Geist', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
324
+ --font-geist-mono: 'Geist Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
325
+
326
+ /* Typography — Scale */
327
+ --text-caption: 12px;
328
+ --leading-caption: 1;
329
+ --tracking-caption: -0.24px;
330
+ --text-body-sm: 14px;
331
+ --leading-body-sm: 1.43;
332
+ --text-body: 16px;
333
+ --leading-body: 1.5;
334
+ --text-heading: 36px;
335
+ --leading-heading: 1.1;
336
+ --tracking-heading: -1.12px;
337
+ --text-heading-lg: 44px;
338
+ --leading-heading-lg: 1.12;
339
+ --tracking-heading-lg: -1.1px;
340
+ --text-display: 72px;
341
+ --leading-display: 1;
342
+ --tracking-display: -2.88px;
343
+
344
+ /* Spacing */
345
+ --spacing-8: 8px;
346
+ --spacing-16: 16px;
347
+ --spacing-24: 24px;
348
+ --spacing-32: 32px;
349
+ --spacing-40: 40px;
350
+ --spacing-56: 56px;
351
+ --spacing-80: 80px;
352
+ --spacing-96: 96px;
353
+ --spacing-120: 120px;
354
+
355
+ /* Border Radius */
356
+ --radius-sm: 3px;
357
+ --radius-lg: 10px;
358
+ --radius-2xl: 20px;
359
+ }
360
+ ```
@@ -0,0 +1,32 @@
1
+ # Factory — Style Reference
2
+
3
+ > terminal war room at midnight
4
+
5
+ **Theme:** dark
6
+
7
+ ![Factory preview](./assets/preview.jpg)
8
+
9
+ Factory is a stark black control surface: an Obsidian canvas, warm-gray supporting text, and a single light card that lands like a dispatch in the dark. Geist and Geist Mono typography, tight tracking, hairline borders, minimal radii, and generous spacing create an instrument-like interface. Signal orange and metric green are reserved for live status and data visualization rather than decorative chrome.
10
+
11
+ ## Guidelines
12
+
13
+ ### Do
14
+
15
+ - Use #101010 as the page canvas and #eeeeee for the primary light-card surface
16
+ - Use Geist at weight 400 for interface text; reserve weight 500 for focused emphasis
17
+ - Use Geist Mono in uppercase for labels, status tags, and metric units
18
+ - Reserve #ee6018 and #a0ca92 for live status, data signals, and chart strokes
19
+ - Build depth through contrast, spacing, and 1px borders instead of shadows
20
+ - Keep section gaps near 96px, card padding near 24px, and cards near 10px radius
21
+
22
+ ### Don't
23
+
24
+ - Do not introduce additional accent colors
25
+ - Do not use bold heading weights or loose editorial typography
26
+ - Do not use orange or green as button, card, or large text fills
27
+ - Do not add drop shadows, glows, or blur to create elevation
28
+ - Do not use lifestyle photography or decorative gradients
29
+
30
+ ## Similar Brands
31
+
32
+ Linear, Vercel, Resend, Cursor, Railway