no-fi-skill 0.3.0 → 0.3.1
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 +40 -29
- package/bin/no-fi-skill.mjs +1 -1
- package/package.json +2 -2
- package/{no-fi → plugin/skills/no-fi}/SKILL.md +2 -2
- /package/{no-fi → plugin/skills/no-fi}/examples/activity-patterns.txt +0 -0
- /package/{no-fi → plugin/skills/no-fi}/examples/card-details.txt +0 -0
- /package/{no-fi → plugin/skills/no-fi}/examples/fintech-dashboard.txt +0 -0
- /package/{no-fi → plugin/skills/no-fi}/examples/send-money-form.txt +0 -0
- /package/{no-fi → plugin/skills/no-fi}/examples/settings-notifications.txt +0 -0
- /package/{no-fi → plugin/skills/no-fi}/examples/spending-report.txt +0 -0
- /package/{no-fi → plugin/skills/no-fi}/examples/transactions-table.txt +0 -0
- /package/{no-fi → plugin/skills/no-fi}/scripts/check_wireframe.mjs +0 -0
- /package/{no-fi → plugin/skills/no-fi}/scripts/check_wireframe.py +0 -0
- /package/{no-fi → plugin/skills/no-fi}/vocabulary.json +0 -0
package/README.md
CHANGED
|
@@ -39,7 +39,11 @@ The outer frame is double-lined, every box inside it is single-lined, and the pr
|
|
|
39
39
|
|
|
40
40
|
## Install
|
|
41
41
|
|
|
42
|
-
Pick one. Each puts the `no-fi
|
|
42
|
+
Pick one. Each puts the `no-fi` skill folder where your agent loads skills from.
|
|
43
|
+
|
|
44
|
+
**With a prompt**
|
|
45
|
+
|
|
46
|
+
Copy the install prompt from [no-fi.dev](https://no-fi.dev/#get-started) and paste it into Claude Code or any agent. It runs the npx command below, or downloads the files one by one if it can't run npx.
|
|
43
47
|
|
|
44
48
|
**With npx**
|
|
45
49
|
|
|
@@ -59,18 +63,18 @@ npx skills add p-a-u-l-i-e/no-fi --skill no-fi
|
|
|
59
63
|
|
|
60
64
|
```sh
|
|
61
65
|
git clone https://github.com/p-a-u-l-i-e/no-fi.git
|
|
62
|
-
cp -R no-fi/no-fi ~/.claude/skills/
|
|
66
|
+
cp -R no-fi/plugin/skills/no-fi ~/.claude/skills/
|
|
63
67
|
```
|
|
64
68
|
|
|
65
69
|
**On claude.ai**
|
|
66
70
|
|
|
67
|
-
Download
|
|
71
|
+
Download [no-fi.zip](https://no-fi.dev/no-fi.zip) and upload it under Settings, Capabilities, Skills. It holds only the skill folder. GitHub's Download ZIP holds the whole repository, which claude.ai won't take as a skill.
|
|
68
72
|
|
|
69
|
-
The skill is plain text
|
|
73
|
+
The skill is plain text plus one small checker script, in Node and Python, so you can read every file before you install it.
|
|
70
74
|
|
|
71
75
|
## Use it
|
|
72
76
|
|
|
73
|
-
Ask for a screen the way you would ask a designer for a sketch
|
|
77
|
+
Ask for a screen the way you would ask a designer for a sketch. Saying wireframe or sketch is enough to load the skill, or type `/no-fi` in Claude Code.
|
|
74
78
|
|
|
75
79
|
> Wireframe a send-money form with three steps.
|
|
76
80
|
>
|
|
@@ -82,7 +86,7 @@ Claude replies with a fenced code block, runs the checker on it, and adds a note
|
|
|
82
86
|
|
|
83
87
|
## The rules
|
|
84
88
|
|
|
85
|
-
Seven rules keep every wireframe readable. The full text is in [`
|
|
89
|
+
Seven rules keep every wireframe readable. The full text is in [`SKILL.md`](plugin/skills/no-fi/SKILL.md).
|
|
86
90
|
|
|
87
91
|
1. **Plain characters, plus box-drawing.** Printable ASCII, box-drawing borders, and block characters for bars and charts. No emoji, no tabs.
|
|
88
92
|
2. **Double outside, single inside.** The outermost container uses double lines. Every box inside it uses single lines.
|
|
@@ -102,42 +106,47 @@ Seven rules keep every wireframe readable. The full text is in [`no-fi/SKILL.md`
|
|
|
102
106
|
- Open states are drawn open: a **select** with its menu below, an **accordion** with its content under it.
|
|
103
107
|
- **Modals**, **toasts**, and **tooltips** are cards drawn inside the screen they sit on.
|
|
104
108
|
|
|
105
|
-
The complete table, with a drawing and a note for each element, is in [`
|
|
109
|
+
The complete table, with a drawing and a note for each element, is in [`SKILL.md`](plugin/skills/no-fi/SKILL.md). The same data is in [`vocabulary.json`](plugin/skills/no-fi/vocabulary.json).
|
|
106
110
|
|
|
107
111
|
## Examples
|
|
108
112
|
|
|
109
|
-
Seven finished screens in [`
|
|
113
|
+
Seven finished screens in [`examples/`](plugin/skills/no-fi/examples), built to use the whole vocabulary:
|
|
110
114
|
|
|
111
115
|
| Screen | File |
|
|
112
116
|
| --- | --- |
|
|
113
|
-
| Fintech dashboard | [`fintech-dashboard.txt`](no-fi/examples/fintech-dashboard.txt) |
|
|
114
|
-
| Send money form | [`send-money-form.txt`](no-fi/examples/send-money-form.txt) |
|
|
115
|
-
| Transactions table | [`transactions-table.txt`](no-fi/examples/transactions-table.txt) |
|
|
116
|
-
| Spending report | [`spending-report.txt`](no-fi/examples/spending-report.txt) |
|
|
117
|
-
| Card details | [`card-details.txt`](no-fi/examples/card-details.txt) |
|
|
118
|
-
| Notification settings | [`settings-notifications.txt`](no-fi/examples/settings-notifications.txt) |
|
|
119
|
-
| Activity patterns | [`activity-patterns.txt`](no-fi/examples/activity-patterns.txt) |
|
|
117
|
+
| Fintech dashboard | [`fintech-dashboard.txt`](plugin/skills/no-fi/examples/fintech-dashboard.txt) |
|
|
118
|
+
| Send money form | [`send-money-form.txt`](plugin/skills/no-fi/examples/send-money-form.txt) |
|
|
119
|
+
| Transactions table | [`transactions-table.txt`](plugin/skills/no-fi/examples/transactions-table.txt) |
|
|
120
|
+
| Spending report | [`spending-report.txt`](plugin/skills/no-fi/examples/spending-report.txt) |
|
|
121
|
+
| Card details | [`card-details.txt`](plugin/skills/no-fi/examples/card-details.txt) |
|
|
122
|
+
| Notification settings | [`settings-notifications.txt`](plugin/skills/no-fi/examples/settings-notifications.txt) |
|
|
123
|
+
| Activity patterns | [`activity-patterns.txt`](plugin/skills/no-fi/examples/activity-patterns.txt) |
|
|
120
124
|
|
|
121
125
|
## Check your work
|
|
122
126
|
|
|
123
|
-
|
|
127
|
+
Your agent checks every wireframe before it shows you one. To check one yourself, from anywhere:
|
|
124
128
|
|
|
125
129
|
```sh
|
|
126
|
-
node no-fi/scripts/check_wireframe.mjs wireframe.txt
|
|
127
|
-
python3 no-fi/scripts/check_wireframe.py wireframe.txt
|
|
128
130
|
npx no-fi-skill check wireframe.txt
|
|
129
131
|
```
|
|
130
132
|
|
|
133
|
+
The checker also ships with the skill, in Node and Python with the same output. From an install, or from this repository:
|
|
134
|
+
|
|
135
|
+
```sh
|
|
136
|
+
node ~/.claude/skills/no-fi/scripts/check_wireframe.mjs wireframe.txt
|
|
137
|
+
python3 plugin/skills/no-fi/scripts/check_wireframe.py wireframe.txt
|
|
138
|
+
```
|
|
139
|
+
|
|
131
140
|
It fails on unsupported characters, tabs, ASCII box borders, boxes that don't close or line up, mixed double and single lines in one box, a double-line box nested inside another box, table dividers that don't land in the same column, progress bars whose fill disagrees with their percentage, bar chart rows whose length disagrees with their value, heatmaps and stacked columns without a legend, and column charts that don't say what a row is worth.
|
|
132
141
|
|
|
133
142
|
## Maintaining the vocabulary
|
|
134
143
|
|
|
135
|
-
`no-fi/vocabulary.json` is the source of truth. These scripts live in `scripts/`, outside the skill, so they don't ship to users. After editing the vocabulary, run:
|
|
144
|
+
`plugin/skills/no-fi/vocabulary.json` is the source of truth. These scripts live in `scripts/`, outside the skill, so they don't ship to users. After editing the vocabulary, run:
|
|
136
145
|
|
|
137
146
|
```sh
|
|
138
147
|
python3 scripts/sync_vocabulary.py # rewrite the tables in SKILL.md
|
|
139
148
|
node scripts/check_coverage.mjs # every element appears in an example
|
|
140
|
-
node no-fi/scripts/check_wireframe.mjs no-fi/examples/*.txt
|
|
149
|
+
node plugin/skills/no-fi/scripts/check_wireframe.mjs plugin/skills/no-fi/examples/*.txt
|
|
141
150
|
```
|
|
142
151
|
|
|
143
152
|
`python3 scripts/check_coverage.py` gives the same coverage output without Node.
|
|
@@ -145,15 +154,17 @@ node no-fi/scripts/check_wireframe.mjs no-fi/examples/*.txt
|
|
|
145
154
|
## Repository layout
|
|
146
155
|
|
|
147
156
|
```
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
+
plugin/ the Claude plugin
|
|
158
|
+
.claude-plugin/ plugin.json
|
|
159
|
+
skills/no-fi/ the skill
|
|
160
|
+
SKILL.md rules and vocabulary tables
|
|
161
|
+
vocabulary.json the element vocabulary as data
|
|
162
|
+
examples/ finished example screens
|
|
163
|
+
scripts/ the wireframe checker
|
|
164
|
+
scripts/ maintainer scripts: vocabulary sync and coverage
|
|
165
|
+
bin/no-fi-skill.mjs the npx no-fi-skill command
|
|
166
|
+
assets/ README images
|
|
167
|
+
site/ the no-fi.dev site
|
|
157
168
|
```
|
|
158
169
|
|
|
159
170
|
## License
|
package/bin/no-fi-skill.mjs
CHANGED
|
@@ -9,7 +9,7 @@ import path from "node:path";
|
|
|
9
9
|
import { fileURLToPath } from "node:url";
|
|
10
10
|
|
|
11
11
|
const root = path.join(path.dirname(fileURLToPath(import.meta.url)), "..");
|
|
12
|
-
const skill = path.join(root, "no-fi");
|
|
12
|
+
const skill = path.join(root, "plugin", "skills", "no-fi");
|
|
13
13
|
const { version } = JSON.parse(fs.readFileSync(path.join(root, "package.json"), "utf8"));
|
|
14
14
|
|
|
15
15
|
const usage = `no-fi ${version}: wireframes without the distraction.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "no-fi-skill",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "An agent skill that draws UI wireframes and charts as plain text, so teams discuss layout and flow instead of color and type.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"wireframe",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
},
|
|
26
26
|
"files": [
|
|
27
27
|
"bin",
|
|
28
|
-
"no-fi",
|
|
28
|
+
"plugin/skills/no-fi",
|
|
29
29
|
"!**/__pycache__",
|
|
30
30
|
"!**/.DS_Store"
|
|
31
31
|
],
|
|
@@ -18,10 +18,10 @@ Draw screens as monospaced text. The goal is to make the conversation about stru
|
|
|
18
18
|
7. **Validate.** Run the checker before showing the result:
|
|
19
19
|
|
|
20
20
|
```sh
|
|
21
|
-
node
|
|
21
|
+
node ${CLAUDE_SKILL_DIR}/scripts/check_wireframe.mjs path/to/wireframe.txt
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
Without Node, `python3
|
|
24
|
+
`${CLAUDE_SKILL_DIR}` is the folder this file is in. Without Node, `python3 ${CLAUDE_SKILL_DIR}/scripts/check_wireframe.py` gives the same output.
|
|
25
25
|
|
|
26
26
|
It fails on unsupported characters, tabs, ASCII box borders, boxes that don't close or line up, mixed double and single lines in one box, a double-line box nested inside another box, table dividers that don't land in the same column top and bottom, progress bars whose fill disagrees with their percentage, bar chart rows whose length disagrees with their value and stated unit, heatmaps and stacked columns without a legend, and column charts that don't say what a row is worth. Fix every failure before presenting the wireframe.
|
|
27
27
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|