@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 +134 -0
- package/dist/index.js +4340 -0
- package/dist/index.js.map +7 -0
- package/package.json +46 -0
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.
|