@floomhq/skills 1.0.3 → 1.1.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/README.md +34 -40
- package/dist/index.js +1361 -261
- package/dist/version.js +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
# @floomhq/
|
|
1
|
+
# @floomhq/skills
|
|
2
2
|
|
|
3
|
-
The Floom CLI:
|
|
3
|
+
The Floom Skills CLI: publish, install, sync, and share AI agent skills.
|
|
4
4
|
|
|
5
|
-
Docs: <https://floom.dev/docs>
|
|
5
|
+
Docs: <https://skills.floom.dev/docs>
|
|
6
6
|
|
|
7
7
|
## Install
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
npm i -g @floomhq/
|
|
10
|
+
npm i -g @floomhq/skills
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
Pinned no-install form for automation:
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
npx -y @floomhq/
|
|
16
|
+
npx -y @floomhq/skills@1.1.0 --help
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
## Login
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
|
-
floom login
|
|
22
|
+
floom-skills login
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
-
The login command starts a browser device flow. Sign in at floom.dev with
|
|
25
|
+
The login command starts a browser device flow. Sign in at skills.floom.dev with
|
|
26
26
|
Google or email, approve the device code, and the CLI stores the session at
|
|
27
27
|
`~/.floom/auth.json`.
|
|
28
28
|
|
|
29
29
|
Check the active account:
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
|
-
floom account
|
|
32
|
+
floom-skills account
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
## First Skill
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
|
-
floom push ~/.claude/skills/my-skill
|
|
38
|
+
floom-skills push ~/.claude/skills/my-skill
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
The folder must contain `SKILL.md`. Each push creates a Library version.
|
|
@@ -43,16 +43,16 @@ The folder must contain `SKILL.md`. Each push creates a Library version.
|
|
|
43
43
|
Create a starter skill when the folder does not exist yet:
|
|
44
44
|
|
|
45
45
|
```bash
|
|
46
|
-
floom new my-skill --agent claude
|
|
46
|
+
floom-skills new my-skill --agent claude
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
## Bulk Sync
|
|
50
50
|
|
|
51
51
|
```bash
|
|
52
|
-
floom sync
|
|
52
|
+
floom-skills sync
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
-
Zero-arg `floom sync` detects installed agents and supported scopes, reviews
|
|
55
|
+
Zero-arg `floom-skills sync` detects installed agents and supported scopes, reviews
|
|
56
56
|
local-to-Library and Library-to-local differences, and applies the selected
|
|
57
57
|
plan. Use `--dry-run` to preview the plan without changing files or Library
|
|
58
58
|
records.
|
|
@@ -60,24 +60,25 @@ records.
|
|
|
60
60
|
Library-to-local only:
|
|
61
61
|
|
|
62
62
|
```bash
|
|
63
|
-
floom pull
|
|
64
|
-
floom pull --agent claude,codex
|
|
63
|
+
floom-skills pull
|
|
64
|
+
floom-skills pull --agent claude,codex
|
|
65
65
|
```
|
|
66
66
|
|
|
67
67
|
Local-to-Library only:
|
|
68
68
|
|
|
69
69
|
```bash
|
|
70
|
-
floom push
|
|
70
|
+
floom-skills push
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
-
Use the installed `floom` command for interactive terminal work. Use the pinned
|
|
74
|
-
`npx -y @floomhq/
|
|
73
|
+
Use the installed `floom-skills` command for interactive terminal work. Use the pinned
|
|
74
|
+
`npx -y @floomhq/skills@1.1.0 <command>` form for automation and agent-run
|
|
75
75
|
commands that need reproducible CLI behavior.
|
|
76
76
|
|
|
77
77
|
## Releasing
|
|
78
78
|
|
|
79
|
-
Releases publish
|
|
80
|
-
`.github/workflows/publish-cli.yml`, triggered by a `
|
|
79
|
+
Releases publish the exact smoke-tested npm tarball via
|
|
80
|
+
`.github/workflows/publish-cli.yml`, triggered by a `skills-v*` tag.
|
|
81
|
+
Provenance is disabled while the source repository remains private.
|
|
81
82
|
|
|
82
83
|
### Hard pre-publish smoke gate
|
|
83
84
|
|
|
@@ -93,24 +94,17 @@ and unknown commands silently rendered the dashboard. Only an out-of-band
|
|
|
93
94
|
real-terminal smoke caught them. This script is that smoke, baked into the
|
|
94
95
|
publish pipeline.
|
|
95
96
|
|
|
96
|
-
### Before pushing a `
|
|
97
|
+
### Before pushing a `skills-v*` tag
|
|
97
98
|
|
|
98
|
-
Run the local
|
|
99
|
+
Run the same local gates from the repo root:
|
|
99
100
|
|
|
100
101
|
```bash
|
|
101
|
-
|
|
102
|
+
pnpm --filter @floomhq/skills --fail-if-no-match lint
|
|
103
|
+
pnpm --filter @floomhq/skills --fail-if-no-match test
|
|
104
|
+
pnpm --filter @floomhq/skills --fail-if-no-match pack:smoke
|
|
105
|
+
packages/cli/scripts/pre-publish-smoke.sh
|
|
102
106
|
```
|
|
103
107
|
|
|
104
|
-
It:
|
|
105
|
-
|
|
106
|
-
1. Confirms the working tree is clean.
|
|
107
|
-
2. Rebuilds the CLI from a clean `dist/`.
|
|
108
|
-
3. Runs the CLI unit test suite (`pnpm --filter @floomhq/floom test`).
|
|
109
|
-
4. Runs the full pre-publish smoke (same script the workflow runs).
|
|
110
|
-
|
|
111
|
-
If everything passes, the script prints the exact `git tag` + `git push origin`
|
|
112
|
-
commands. You then push the tag and the workflow takes over.
|
|
113
|
-
|
|
114
108
|
If anything fails, fix the issue first. Do not push the tag.
|
|
115
109
|
|
|
116
110
|
### Smoke-only workflow run
|
|
@@ -119,7 +113,7 @@ To validate the smoke script itself without publishing (e.g. after editing
|
|
|
119
113
|
`scripts/pre-publish-smoke.sh`):
|
|
120
114
|
|
|
121
115
|
```
|
|
122
|
-
GitHub → Actions → Publish @floomhq/
|
|
116
|
+
GitHub → Actions → Publish @floomhq/skills → Run workflow
|
|
123
117
|
smoke_only: true
|
|
124
118
|
```
|
|
125
119
|
|
|
@@ -138,14 +132,14 @@ See `scripts/pre-publish-smoke.sh` for the full assertion list. Summary:
|
|
|
138
132
|
|
|
139
133
|
| Stage | Asserts |
|
|
140
134
|
|------|---------|
|
|
141
|
-
| 1 | Tarball builds, packs, installs cleanly into isolated `$HOME`; installed `floom --version` matches `package.json` |
|
|
142
|
-
| 2 | **Every** subcommand `--help` exits 0, starts with `Usage: floom`, writes no `~/.floom/auth.json`, prints no "Signed (in|out)" / "Waiting for browser" (P0 #1 from 3.0.0) |
|
|
143
|
-
| 3 | `floom --help \| head -3` and `floom push --help \| head -1` print no EPIPE / "Unhandled error event" (P0 #2 from 3.0.0) |
|
|
144
|
-
| 4 | `floom <unknown>` exits non-zero with "unknown command" + "did you mean" hint (P0 #3 from 3.0.0) |
|
|
145
|
-
| 5 | Bare `floom --help` exits 0 with grouped help |
|
|
135
|
+
| 1 | Tarball builds, packs, installs cleanly into isolated `$HOME`; installed `floom-skills --version` matches `package.json` |
|
|
136
|
+
| 2 | **Every** subcommand `--help` exits 0, starts with `Usage: floom-skills`, writes no `~/.floom/auth.json`, prints no "Signed (in|out)" / "Waiting for browser" (P0 #1 from 3.0.0) |
|
|
137
|
+
| 3 | `floom-skills --help \| head -3` and `floom-skills push --help \| head -1` print no EPIPE / "Unhandled error event" (P0 #2 from 3.0.0) |
|
|
138
|
+
| 4 | `floom-skills <unknown>` exits non-zero with "unknown command" + "did you mean" hint (P0 #3 from 3.0.0) |
|
|
139
|
+
| 5 | Bare `floom-skills --help` exits 0 with grouped help |
|
|
146
140
|
| 6 | Unauth `whoami` / `account` / `logout` exit 0 idempotent; unauth `status` / `sync --json` / `push --json` exit non-zero with no stack trace |
|
|
147
|
-
| 7 | `floom logout extra-positional` is rejected with non-zero exit AND `~/.floom/auth.json` is preserved (no destructive body) |
|
|
148
|
-
| 8 | **Agent detection** picks up fake `.claude/`, `.codex/`, `.cursor/` marker dirs in the isolated `$HOME` (verified by parsing `floom doctor --json`); bare `floom sync` / `floom pull` with planted agents do not crash unauth (clean `signedIn:false` envelope). Note: fan-out *behaviour itself* requires real auth, so it is exercised at the **unit-test layer** by `src/commands/sync.fanout.test.ts`, which the publish workflow runs as a separate hard gate before the smoke. |
|
|
141
|
+
| 7 | `floom-skills logout extra-positional` is rejected with non-zero exit AND `~/.floom/auth.json` is preserved (no destructive body) |
|
|
142
|
+
| 8 | **Agent detection** picks up fake `.claude/`, `.codex/`, `.cursor/` marker dirs in the isolated `$HOME` (verified by parsing `floom-skills doctor --json`); bare `floom-skills sync` / `floom-skills pull` with planted agents do not crash unauth (clean `signedIn:false` envelope). Note: fan-out *behaviour itself* requires real auth, so it is exercised at the **unit-test layer** by `src/commands/sync.fanout.test.ts`, which the publish workflow runs as a separate hard gate before the smoke. |
|
|
149
143
|
|
|
150
144
|
If any assertion fails, the publish job fails. The smoke script exits non-zero
|
|
151
145
|
on the first failure and prints a summary of every failed check.
|