You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
office/learn/workspace: fast-path prompt + /settings/tokens link fix
Add a 'Fast path — one prompt' section at the top that scaffolds the
minimum workspace and walks through PAT minting in a single Claude
Code prompt. The minimum is now marked in §3 ([min]) so the prompt
and the layout it points at agree.
Fix two stale links: /settings → /settings/tokens (the actual mint
surface) in §2 and §11.
Copy file name to clipboardExpand all lines: web/editorial/tutorials/workspace.md
+27-10Lines changed: 27 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,11 +4,28 @@ A field guide for setting up a local folder that lets us write claudepot posts w
4
4
5
5
Sister doc to [/office/learn/formats](/office/learn/formats) (which species of contribution live on claudepot) and [/office/learn/principles](/office/learn/principles) (how to use AI in any of these without producing slop). Sub-doc to [/office/voice](/office/voice).
6
6
7
-
**Version:** 0.1.0
7
+
**Version:** 0.2.0
8
8
**Updated:** 2026-05-13
9
9
10
10
---
11
11
12
+
## Fast path — one prompt
13
+
14
+
If you want the rough version, make an empty folder, open Claude Code in it, and paste the prompt below. It scaffolds the minimum workspace and walks you through minting a PAT in one pass. The long-form sections that follow explain what each piece does and when to promote it.
> Read https://claudepot.com/office/learn/workspace, scaffold the current folder per §3 (minimum: `.env.example`, `.gitignore`, `CLAUDE.md`, `posts/`, `notes/`), then walk me through minting a `CLAUDEPOT_PAT` at `/settings/tokens` — name the scopes I should check (`read:all`, `submission:write`, `comment:write`), wait while I paste it back, and write it to `.env`. Pause for confirmation before each file write.
24
+
25
+
The prompt names the scopes by their exact slug so Claude can point at the right checkboxes without re-reading § 2, and it pins § 3 as the layout reference so the scaffold matches what the rest of this page assumes. `.claude/rules/`, `.claude/skills/`, `.claude/commands/` are deliberately not in the minimum — they're promoted into existence as in-session patterns repeat (see § 9's graduation rule), not scaffolded blank.
26
+
27
+
---
28
+
12
29
## 1. Why a workspace
13
30
14
31
Three things benefit from living in one folder. Credentials need somewhere safe that we never paste into a chat. Claude Code reads `CLAUDE.md`, `.claude/rules/`, and `.claude/skills/` relative to the working directory, so a dedicated folder is the only way to make project-scoped instructions hold. Voice priming wants past posts close at hand, and a folder keeps them close. The setup is small: one `.env`, one `CLAUDE.md`, a few skills as needed. Once it exists, future sessions are a single `cd`.
@@ -24,7 +41,7 @@ Two credentials gate the writing loop.
24
41
|`ANTHROPIC_API_KEY`| Direct API access for Claude calls outside Claude Code |`.env`, never committed |
25
42
|`CLAUDEPOT_PAT`| Posting + reading our submissions via the claudepot API |`.env`, never committed |
26
43
27
-
`ANTHROPIC_API_KEY` is optional if we use Claude Code's subscription auth — `claude login` once, no key needed. The API key matters when scripts outside Claude Code (the voice-priming fetch, batch jobs) need direct access. `CLAUDEPOT_PAT` is created at [claudepot.com/settings](/settings) with scopes scoped to what we actually use — typically `read:all` for fetching past posts plus `submission:write` and `comment:write` if scripts also post.
44
+
`ANTHROPIC_API_KEY` is optional if we use Claude Code's subscription auth — `claude login` once, no key needed. The API key matters when scripts outside Claude Code (the voice-priming fetch, batch jobs) need direct access. `CLAUDEPOT_PAT` is created at [claudepot.com/settings/tokens](/settings/tokens) with scopes scoped to what we actually use — typically `read:all` for fetching past posts plus `submission:write` and `comment:write` if scripts also post.
28
45
29
46
The `.env`:
30
47
@@ -47,14 +64,14 @@ The anti-pattern: keys in `CLAUDE.md`. `CLAUDE.md` is loaded into model context
47
64
48
65
## 3. The folder layout
49
66
50
-
A workspace is a flat folder with one config tree and one or two content trees.
67
+
A workspace is a flat folder with one config tree and one or two content trees. The tree below is the *full* shape — the minimum-viable bootstrap is just the four files and two content dirs marked with `[min]`. Everything else is added when an in-session pattern repeats often enough to earn its file (see § 9's graduation rule).
`posts/` and `notes/` are the only content directories that survive across sessions. Everything else is configuration that Claude Code reads.
@@ -322,7 +339,7 @@ The workspace is invisible most of the time. We notice it when something it caug
322
339
323
340
A workspace drifts. Three habits keep it useful.
324
341
325
-
-**Rotate `CLAUDEPOT_PAT` on a 90-day cadence**, or sooner if it leaks (committed to a public repo, pasted into a chat, screenshot-shared). Revoke at [claudepot.com/settings](/settings), create a fresh one, update `.env`.
342
+
-**Rotate `CLAUDEPOT_PAT` on a 90-day cadence**, or sooner if it leaks (committed to a public repo, pasted into a chat, screenshot-shared). Revoke at [claudepot.com/settings/tokens](/settings/tokens), create a fresh one, update `.env`.
326
343
-**Review `CLAUDE.md` monthly**. Voice drifts in both directions — ours and the model's. If `CLAUDE.md` cites a section in [/office/voice](/office/voice) that no longer reads the same way, reconcile.
327
344
-**Split when a skill grows past 50 lines**. A long skill is two skills sharing a folder, or a skill that should have split into a skill plus a rule. Split early; merging back is cheaper than reading a 200-line `SKILL.md` every time.
328
345
-**Two files saying the same thing means one is stale**. Reconcile or delete; never let both live.
0 commit comments