@orbweva/academy 0.2.0 → 0.3.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/CHANGELOG.md CHANGED
@@ -4,6 +4,22 @@ All notable changes to `@orbweva/academy` will be documented here. Format based
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.3.0] — 2026-04-14
8
+
9
+ ### Added
10
+ - **`web-build` pack** — 5 quality-audit skills for websites: `web-audit`, `web-perf`, `web-a11y`, `web-copy`, `web-brand`. Positioned as the quality layer on top of generation tools (Anthropic's app factory, Lovable, v0, Bolt). Repo: https://github.com/ORBWEVA/web-build-pack
11
+ - **`ai-media` pack** — 6 skills for AI-generated video/image/voice pipelines via kie.ai: `ai-media-setup`, `ai-media-video` (Veo 3), `ai-media-image` (Nano Banana / Flux), `ai-media-voice` (ElevenLabs), `ai-media-pipeline` (n8n workflow template), `ai-media-cost` (pre-flight budget). Repo: https://github.com/ORBWEVA/ai-media-pack
12
+ - `full` track now includes `web-build-pack` and `ai-media-pack`.
13
+
14
+ ### Changed
15
+ - `marketing` pack removed from manifest (replaced by `ai-media`, which better matches the "automation via AI tools" framing).
16
+ - `web-video` pack removed (replaced by `web-build`, which separates web-quality audits from future video work; video-gen work now lives under `ai-media`).
17
+ - `web-build` pack optionally includes `gtm-skills` (for deeper SEO tooling).
18
+ - `ai-media` pack optionally includes `solo-agents` (for workflow/agent design).
19
+
20
+ ### Notes
21
+ - `loka` pack stays as `status: "planned"` — repo not yet scaffolded.
22
+
7
23
  ## [0.2.0] — 2026-04-14
8
24
 
9
25
  ### Added
@@ -0,0 +1,138 @@
1
+ # Publishing `@orbweva/academy` to npm
2
+
3
+ Maintainer reference. Follow this any time you need to generate a new npm token or publish a new version.
4
+
5
+ ## Why tokens (not OTP)
6
+
7
+ Our npm account uses a **security key / passkey** for 2FA. Security keys can't be used from the CLI, so `npm publish --otp=<code>` won't work. Instead we use a **granular access token with "Bypass 2FA"** enabled.
8
+
9
+ ---
10
+
11
+ ## Generate a new publish token
12
+
13
+ Do this when your current token expires (you'll get a `401 Unauthorized` on `npm publish`) or whenever you want to rotate.
14
+
15
+ ### 1. Revoke the old token first (optional but tidy)
16
+
17
+ https://www.npmjs.com/settings/orbweva/tokens → find the old `academy-publish` → **Revoke**
18
+
19
+ ### 2. Generate a new token
20
+
21
+ https://www.npmjs.com/settings/orbweva/tokens → **Generate New Token** → **Granular Access Token**
22
+
23
+ Fill in exactly:
24
+
25
+ | Field | Value |
26
+ |---|---|
27
+ | **Token name** | `academy-publish` (or `academy-publish-YYYYMM` to track age) |
28
+ | **Description** | `CLI publish for @orbweva/academy` (optional) |
29
+ | **Bypass two-factor authentication (2FA)** | ✅ **checked** — required for our security-key 2FA setup |
30
+ | **Allowed IP ranges** | leave empty |
31
+ | **Permissions** | **Read and write** |
32
+ | **Select packages** | ✅ **All packages** (covers `@orbweva/*` current + future) |
33
+ | **Organizations → Permissions** | **No access** (we publish under user scope, not org) |
34
+ | **Expiration** | **90 days** (the max for write tokens) |
35
+
36
+ Click **Generate Token**. Copy the `npm_…` value — **you only see it once.**
37
+
38
+ ### 3. Install the token locally
39
+
40
+ In your terminal:
41
+
42
+ ```bash
43
+ # If you already have a line for registry.npmjs.org in ~/.npmrc,
44
+ # edit it instead of appending a duplicate.
45
+ echo "//registry.npmjs.org/:_authToken=npm_PASTE_YOUR_NEW_TOKEN" >> ~/.npmrc
46
+ chmod 600 ~/.npmrc
47
+ ```
48
+
49
+ Verify:
50
+
51
+ ```bash
52
+ npm whoami
53
+ # should print: orbweva
54
+ ```
55
+
56
+ Done. No terminal restart needed — npm reads `~/.npmrc` fresh on every command.
57
+
58
+ ---
59
+
60
+ ## Publishing a new version
61
+
62
+ Flow from clean checkout:
63
+
64
+ ```bash
65
+ cd /Users/ryno/orbweva-academy/academy
66
+
67
+ # 1. Edit code / docs / manifest
68
+ # 2. Update CHANGELOG.md under [Unreleased]
69
+
70
+ # 3. Bump version (rewrites package.json, commits, tags)
71
+ npm version patch # 0.2.0 → 0.2.1 (bug fixes)
72
+ # or:
73
+ npm version minor # 0.2.0 → 0.3.0 (new features, backwards-compat)
74
+ # or:
75
+ npm version major # 0.2.0 → 1.0.0 (breaking changes)
76
+
77
+ # 4. Push code + tag
78
+ git push origin main --follow-tags
79
+
80
+ # 5. Publish
81
+ npm publish --access public
82
+ ```
83
+
84
+ Expected output ends with:
85
+
86
+ ```
87
+ + @orbweva/academy@0.2.1
88
+ ```
89
+
90
+ ### Sanity check after publish
91
+
92
+ ```bash
93
+ cd /tmp && rm -rf verify && mkdir verify && cd verify
94
+ npx --yes @orbweva/academy@latest --help
95
+ ```
96
+
97
+ Should show the help output from the new version.
98
+
99
+ ---
100
+
101
+ ## Troubleshooting
102
+
103
+ ### `401 Unauthorized` on `npm publish`
104
+
105
+ Token expired (or got revoked). Generate a new one (see top of this doc).
106
+
107
+ ### `403 Forbidden — Two-factor authentication required`
108
+
109
+ The token doesn't have **Bypass 2FA** enabled. Revoke it and generate a new one with that box checked.
110
+
111
+ ### `403 Forbidden — You cannot publish over the previously published versions`
112
+
113
+ You tried to re-publish the same version number. Bump the version first with `npm version patch` (or `minor` / `major`).
114
+
115
+ ### `npm WARN publish npm auto-corrected some errors`
116
+
117
+ Harmless — npm is just normalizing the `repository.url` format. No action needed.
118
+
119
+ ### I pasted my token into a chat / Slack / email
120
+
121
+ Revoke immediately at https://www.npmjs.com/settings/orbweva/tokens and generate a new one. Never share a live token.
122
+
123
+ ---
124
+
125
+ ## What lives where
126
+
127
+ | Thing | Location |
128
+ |---|---|
129
+ | Token (current) | `~/.npmrc` (owner-readable only) |
130
+ | Token management | https://www.npmjs.com/settings/orbweva/tokens |
131
+ | Package page | https://www.npmjs.com/package/@orbweva/academy |
132
+ | Source repo | https://github.com/ORBWEVA/academy |
133
+
134
+ ---
135
+
136
+ ## Why not Trusted Publishing?
137
+
138
+ npm's [Trusted Publishers](https://docs.npmjs.com/trusted-publishers) lets you publish from GitHub Actions with no tokens at all. Worth setting up when we move to CI-based releases. Skipped for now because manual publishes are infrequent enough that token management isn't painful.
package/manifest.json CHANGED
@@ -13,9 +13,10 @@
13
13
  "solo-skills": { "repo": "ORBWEVA/solo-skills", "skills": ["solo"] },
14
14
  "solo-agents": { "repo": "ORBWEVA/solo-agents", "skills": ["agents"] },
15
15
 
16
- "loka-pack": { "repo": "ORBWEVA/loka-pack", "skills": ["loka-integration"], "status": "planned" },
17
- "marketing-pack": { "repo": "ORBWEVA/marketing-pack", "skills": ["marketing-agency"], "status": "planned" },
18
- "web-video-pack": { "repo": "ORBWEVA/web-video-pack", "skills": ["web-design", "video-editing"], "status": "planned" }
16
+ "web-build-pack": { "repo": "ORBWEVA/web-build-pack", "skills": ["web-audit", "web-perf", "web-a11y", "web-copy", "web-brand"] },
17
+ "ai-media-pack": { "repo": "ORBWEVA/ai-media-pack", "skills": ["ai-media-setup", "ai-media-video", "ai-media-image", "ai-media-voice", "ai-media-pipeline", "ai-media-cost"] },
18
+
19
+ "loka-pack": { "repo": "ORBWEVA/loka-pack", "skills": ["loka-integration"], "status": "planned" }
19
20
  },
20
21
  "tracks": {
21
22
  "accelerator": {
@@ -44,29 +45,29 @@
44
45
  },
45
46
  "full": {
46
47
  "label": "Full Academy",
47
- "tagline": "All 11 ORBWEVA skill repos — no tradeoffs",
48
- "required": ["secure-setup", "orbweva-method", "resume-skill", "founder-discovery", "dt-skill", "founder-metrics", "founder-pitch", "founder-ops", "gtm-skills", "solo-skills", "solo-agents"],
48
+ "tagline": "All ORBWEVA skill repos — no tradeoffs",
49
+ "required": ["secure-setup", "orbweva-method", "resume-skill", "founder-discovery", "dt-skill", "founder-metrics", "founder-pitch", "founder-ops", "gtm-skills", "solo-skills", "solo-agents", "web-build-pack", "ai-media-pack"],
49
50
  "optional": []
50
51
  }
51
52
  },
52
53
  "packs": {
54
+ "web-build": {
55
+ "label": "Web Build (Quality Audit Layer)",
56
+ "tagline": "Audit and improve websites — SEO, perf, accessibility, copy, brand",
57
+ "required": ["web-build-pack"],
58
+ "optional": ["gtm-skills"]
59
+ },
60
+ "ai-media": {
61
+ "label": "AI Media",
62
+ "tagline": "AI-generated video, image, and voice pipelines via kie.ai",
63
+ "required": ["ai-media-pack"],
64
+ "optional": ["solo-agents"]
65
+ },
53
66
  "loka": {
54
67
  "label": "Loka / LoLA",
55
68
  "tagline": "Build a business on the Loka living-textbook + LoLA avatar platform",
56
69
  "required": ["loka-pack"],
57
70
  "optional": []
58
- },
59
- "marketing": {
60
- "label": "Marketing Agency",
61
- "tagline": "Run a one-person (or small team) marketing agency",
62
- "required": ["marketing-pack"],
63
- "optional": ["solo-skills", "solo-agents"]
64
- },
65
- "web-video": {
66
- "label": "Web + Video Studio",
67
- "tagline": "Web design + video editing studio",
68
- "required": ["web-video-pack"],
69
- "optional": ["solo-skills"]
70
71
  }
71
72
  },
72
73
  "mcpServers": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orbweva/academy",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "One-command installer for ORBWEVA Academy — skills, MCP configs, and CLI tool guidance for Claude Code.",
5
5
  "type": "module",
6
6
  "bin": {