@linnify/cli 0.6.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 ADDED
@@ -0,0 +1,134 @@
1
+ # @linnify/cli
2
+
3
+ CLI tool that pulls boilerplate and skills from the Linnify Registry.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pnpm add -g @linnify/cli
9
+ ```
10
+
11
+ Or run directly:
12
+
13
+ ```bash
14
+ pnpm dlx @linnify/cli list
15
+ ```
16
+
17
+ ## Prerequisites
18
+
19
+ - [GitHub CLI](https://cli.github.com/) installed and authenticated (`gh auth login`)
20
+ - Access to the `linnify/linnify-registry` private repo
21
+
22
+ ## Commands
23
+
24
+ ### Boilerplate
25
+
26
+ Pull the full monorepo boilerplate with selected app starters. Each `--app` flag takes a JSON object with `name` (target folder inside `apps/`) and `app` (starter to use).
27
+
28
+ Available starters: `web`, `api`, `job`.
29
+
30
+ ```bash
31
+ linnify boilerplate \
32
+ --app='{"name":"web","app":"web"}' \
33
+ --app='{"name":"admin","app":"web"}' \
34
+ --app='{"name":"jobs","app":"job"}'
35
+ ```
36
+
37
+ This copies the entire boilerplate (root configs, `packages/`, `.github/`, etc.) into the current directory, and creates only the selected apps inside `apps/`:
38
+
39
+ | `--app` value | Result |
40
+ |---------------|--------|
41
+ | `{"name":"web","app":"web"}` | `apps/web/` using the **web** starter (Next.js) |
42
+ | `{"name":"admin","app":"web"}` | `apps/admin/` using the **web** starter (Next.js) |
43
+ | `{"name":"jobs","app":"job"}` | `apps/jobs/` using the **job** starter (background jobs) |
44
+ | `{"name":"api","app":"api"}` | `apps/api/` using the **api** starter (Fastify) |
45
+
46
+ ### Skills
47
+
48
+ Pull one or more skills into `.agents/skills/` with symlinks at `.claude/skills/` and `.cursor/skills/`:
49
+
50
+ ```bash
51
+ linnify skills web # single skill
52
+ linnify skills web,terraform,document-feature # multiple skills (comma-separated)
53
+ ```
54
+
55
+ Available skills:
56
+
57
+ | Name | Aliases | Description |
58
+ |------|---------|-------------|
59
+ | `web` | — | Next.js conventions, server actions, data loading, forms |
60
+ | `terraform` | — | Terraform on GCP patterns, modules, environments |
61
+ | `document-feature` | `docs` | Product-focused feature documentation |
62
+ | `create-prompt` | `prompt` | LLM prompt creation patterns |
63
+
64
+ Files are placed in `.agents/skills/<name>/` and relative symlinks are created:
65
+ - `.claude/skills/<name>` → `../../.agents/skills/<name>`
66
+ - `.cursor/skills/<name>` → `../../.agents/skills/<name>`
67
+
68
+ ### List
69
+
70
+ ```bash
71
+ linnify list # all starters and skills
72
+ linnify list:skills # skills only
73
+ ```
74
+
75
+ ### Flags
76
+
77
+ | Flag | Applies to | Description |
78
+ |------|-----------|-------------|
79
+ | `--app <json>` | boilerplate | App to include (repeatable) |
80
+ | `--force` | boilerplate | Overwrite existing app directories |
81
+ | `--branch <b>` | all | Pull from a specific branch (default: `main`) |
82
+
83
+ ## Development
84
+
85
+ ```bash
86
+ cd cli
87
+ pnpm install
88
+ pnpm dev boilerplate --help # run in dev mode
89
+ pnpm build # bundle to dist/index.js
90
+ pnpm type-check # typecheck only
91
+ ```
92
+
93
+ ## Adding new starters or skills
94
+
95
+ Edit `src/lib/config.ts` — starters are listed in `boilerplate.availableApps`, skills are auto-registered from the `skills` map.
96
+
97
+ ## Publishing a new version
98
+
99
+ The package is published to the public npm registry as `@linnify/cli`.
100
+
101
+ **Prerequisites:** you must be logged in to npm with an account that has publish access to the `@linnify` org:
102
+
103
+ ```bash
104
+ npm login
105
+ ```
106
+
107
+ **Steps:**
108
+
109
+ 1. Bump the version in `cli/package.json` following [semver](https://semver.org/):
110
+
111
+ | Change type | Command |
112
+ |-------------|---------|
113
+ | Bug fix | `npm version patch` |
114
+ | New feature (backwards-compatible) | `npm version minor` |
115
+ | Breaking change | `npm version major` |
116
+
117
+ Or edit the `"version"` field manually.
118
+
119
+ 2. Publish from the `cli/` directory — the `prepublishOnly` script builds automatically:
120
+
121
+ ```bash
122
+ cd cli
123
+ npm publish
124
+ ```
125
+
126
+ 3. Commit and push the version bump:
127
+
128
+ ```bash
129
+ git add cli/package.json
130
+ git commit -m "chore(cli): release v$(node -p "require('./cli/package.json').version")"
131
+ git push
132
+ ```
133
+
134
+ > **Note:** The package is scoped (`@linnify/cli`) and published with `"access": "public"`, so no extra flags are needed.