@warp-drive/memory-alpha 5.10.0-alpha.10 → 5.10.0-alpha.12

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 CHANGED
@@ -8,13 +8,11 @@
8
8
  />
9
9
  </p>
10
10
 
11
- ![NPM Stable Version](https://img.shields.io/npm/v/ember-data/latest?label=version&style=flat&color=fdb155)
12
- ![NPM Downloads](https://img.shields.io/npm/dm/ember-data.svg?style=flat&color=fdb155)
11
+ ![NPM Stable Version](https://img.shields.io/npm/v/%40warp-drive%2Fmemory-alpha/latest?label=version&style=flat&color=fdb155)
12
+ ![NPM Downloads](https://img.shields.io/npm/dm/%40warp-drive%2Fmemory-alpha.svg?style=flat&color=fdb155)
13
13
  ![License](https://img.shields.io/github/license/warp-drive-data/warp-drive.svg?style=flat&color=fdb155)
14
- [![EmberJS Discord Community Server](https://img.shields.io/badge/EmberJS-grey?logo=discord&logoColor=fdb155)](https://discord.gg/zT3asNS
15
- )
16
- [![WarpDrive Discord Server](https://img.shields.io/badge/WarpDrive-grey?logo=discord&logoColor=fdb155)](https://discord.gg/PHBbnWJx5S
17
- )
14
+ [![EmberJS Discord Community Server](https://img.shields.io/badge/EmberJS-grey?logo=discord&logoColor=fdb155)](https://discord.gg/zT3asNS)
15
+ [![WarpDrive Discord Server](https://img.shields.io/badge/WarpDrive-grey?logo=discord&logoColor=fdb155)](https://discord.gg/PHBbnWJx5S)
18
16
 
19
17
  # @warp-drive/memory-alpha
20
18
 
@@ -32,6 +30,7 @@ other skill files, do not list or read whole directories — this table is enoug
32
30
  | Define a resource's shape — fields, relationships, identity — for the `Store` | `skills/schemas/define-a-resource-schema.md` |
33
31
  | Fetch or query remote data through the `Store` so it's cached and reactive | `skills/requests/fetch-and-cache-data.md` |
34
32
  | Re-record one holodeck mock, or review a test that sets `RECORD` | `skills/holodeck/using-record.md` |
33
+ | Look up a guide, upgrade note, or API reference page that no row above covers — a concept, an option, a signature | `skills/docs/read-the-docs-as-markdown.md` |
35
34
  | You're contributing to WarpDrive itself, not just consuming it as a dependency | `skills/contributors/index.md` |
36
35
 
37
36
  This table is kept in sync with [`skills/index.md`](./skills/index.md), which is the same
@@ -113,3 +112,63 @@ const skill = readFileSync(pkgPath.replace('package.json', 'skills/schemas/defin
113
112
 
114
113
  Or point an MCP filesystem/docs server, a Claude Code skill, or any other agent tooling at the
115
114
  installed package's `skills` directory.
115
+
116
+ ### ♥️ Credits
117
+
118
+ <details>
119
+ <summary>Brought to you with ♥️ love by <a href="https://emberjs.com" title="EmberJS">🐹 Ember</a></summary>
120
+
121
+ <style type="text/css">
122
+ img.project-logo {
123
+ padding: 0 5em 1em 5em;
124
+ width: 100px;
125
+ border-bottom: 2px solid #bbb;
126
+ margin: 0 auto;
127
+ display: block;
128
+ }
129
+ details > summary {
130
+ font-size: 1.1rem;
131
+ line-height: 1rem;
132
+ margin-bottom: 1rem;
133
+ }
134
+ details {
135
+ font-size: 1rem;
136
+ }
137
+ details > summary strong {
138
+ display: inline-block;
139
+ padding: .2rem 0;
140
+ color: #000;
141
+ border-bottom: 3px solid #bbb;
142
+ }
143
+
144
+ details > details {
145
+ margin-left: 2rem;
146
+ }
147
+ details > details > summary {
148
+ font-size: 1rem;
149
+ line-height: 1rem;
150
+ margin-bottom: 1rem;
151
+ }
152
+ details > details > summary strong {
153
+ display: inline-block;
154
+ padding: .2rem 0;
155
+ color: #555;
156
+ border-bottom: 2px solid #555;
157
+ }
158
+ details > details {
159
+ font-size: .85rem;
160
+ }
161
+
162
+ @media (prefers-color-scheme: dark) {
163
+ details > summary strong {
164
+ color: #fff;
165
+ }
166
+ }
167
+ @media (prefers-color-scheme: dark) {
168
+ details > details > summary strong {
169
+ color: #afaba0;
170
+ border-bottom: 2px solid #afaba0;
171
+ }
172
+ }
173
+ </style>
174
+ </details>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@warp-drive/memory-alpha",
3
- "version": "5.10.0-alpha.10",
3
+ "version": "5.10.0-alpha.12",
4
4
  "description": "WarpDrive knowledge packaged as plain markdown for AI coding agents (Claude Skills, MCP servers, Copilot/Cursor instruction files, etc.)",
5
5
  "license": "MIT",
6
6
  "author": "Chris Thoburn <runspired@users.noreply.github.com>",
package/skills/_meta.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "title": "Skills",
3
- "items": ["schemas", "requests", "holodeck", "contributors"],
3
+ "items": ["schemas", "requests", "holodeck", "docs", "contributors"],
4
4
  "webIndex": "overview",
5
5
  "files": {
6
6
  "index": { "draft": true }
@@ -64,10 +64,17 @@ checks CI runs on every PR, so a PR opened this way carries everything those che
64
64
  | `:label: deprecation` | a new deprecation |
65
65
  | `:label: doc` | a fix or improvement to guides or API docs |
66
66
  | `:label: test` | new tests, or a refactor of existing tests |
67
- | `:label: chore` | internal refactoring with no public API change worth calling out |
67
+ | `:label: chore` | internal refactoring, or a fix scoped only to build tooling, lint/CI config, or other dev-experience-only code, with no public API or runtime-behavior change worth calling out |
68
68
  | `:label: rfc` | a new RFC, or a change to one; see [Writing and Implementing RFCs](./writing-and-implementing-rfcs.md) |
69
69
  | `:label: dependencies` | a dependency bump on `main` |
70
70
 
71
+ `:label: bug` is for a fix a consumer of the published packages could actually hit — a runtime
72
+ behavior change. A PR that only touches build/lint/infra/DX surfaces (a broken `turbo` task, a
73
+ flaky CI workflow, an eslint rule, a codemod script) is `:label: chore` even though you're
74
+ "fixing" something, because nothing in the published packages changes. Title that PR
75
+ `chore(scope): subject`, not `fix(scope): subject` — the bot in step 5 maps a `fix:`-typed
76
+ title straight to `:label: bug`, which would misfile it.
77
+
71
78
  Add a target label only when the change needs to be backported: one `:dart:` label per
72
79
  release channel — `:dart: beta`, `:dart: release`, `:dart: lts`, `:dart: lts-prev`.
73
80
  Maintainers search these while releasing and remove each one once its backport PR is open.
@@ -50,18 +50,36 @@ last two bullets: the checks and the label.
50
50
  of editing the draft themselves, so their preferences carry into the sections you haven't
51
51
  written yet. Link the guide or symbol that owns a concept instead of re-explaining it.
52
52
  5. Reader-test before you call it done. Hand the finished text, and only the text (for TSDoc, the
53
- comment together with the signature it documents), to a fresh agent instance that has none of
54
- your conversation, along with three to five questions a real
55
- reader would bring to it, and fix whatever it gets wrong or has to guess at. If you can't spawn
56
- one, ask the user to paste the text into a fresh session and relay the answers. For API docs
57
- the question is always some form of "how do I use this?"; if the answer requires opening the
58
- source, the doc is missing an example or a link. For a guide, ask what prior knowledge it
59
- assumes and whether that matches the audience you chose in step 3. For an `upgrading/` or
60
- `blog/` page, ask which version the page is written for and whether a reader on a different
61
- version can tell.
53
+ comment together with the signature it documents), to one fresh agent instance per audience
54
+ the guide for this type of doc names, each with none of your conversation, run in parallel.
55
+ The guide's first-named audience is the primary one: fix whatever that reader gets wrong or
56
+ has to guess at, and fix a secondary reader's gap only when the fix is cheap, usually a link,
57
+ so the page does not drift toward nobody. If you can't spawn agents, ask the user to paste each
58
+ whole prompt, text included, into a fresh session and relay the answers. Each prompt has three
59
+ parts, and the first is the one that is easy to skip:
60
+ - Tell the agent who it is. Name its audience using one of the bold labels in
61
+ [Know Your Audience](/guides/contributing/writing-documentation/index.md#know-your-audience),
62
+ and say what that reader already knows and does not: an existing user reading API docs knows
63
+ the project's vocabulary but not the concept behind the thing this page documents; a hobbyist
64
+ reading a tutorial knows their own stack and nothing about ***Warp*Drive**. Without this the
65
+ agent judges every unexplained term as a gap, or none of them, and either answer is noise.
66
+ - Give it three to five questions that reader would bring to the text. For API docs, a
67
+ package's `src/index.md` landing page included, the question is always some form of "how do
68
+ I use this?"; if the answer requires opening the source, the doc is missing an example or a
69
+ link. For a README, ask whether the reader would install the package and what they would type
70
+ first. For a guide, ask what prior knowledge it assumes and whether that matches the audience
71
+ you named. For an `upgrading/` or `blog/` page, ask which version the page is written for and
72
+ whether a reader on a different version can tell.
73
+ - Ask it to say, for each answer, whether it came from the text, needed a guess, or could not
74
+ be answered, and to list the terms it did not know. Judge that list against the audience you
75
+ named, not against zero knowledge; a term the audience is assumed to know is not a gap.
62
76
  6. Check, preview, then hand off:
63
77
  - For API docs, every item in
64
78
  [Content Standards](/guides/contributing/writing-documentation/writing-api-docs.md#content-standards),
79
+ including a `@summary` on each exported symbol or `@module` comment you add or touch that
80
+ owns an API page (not on class members), since it is that page's only `llms.txt`
81
+ description, per
82
+ [Give Each API Page a `@summary`](/guides/contributing/writing-documentation/writing-api-docs.md#give-each-api-page-a-summary),
65
83
  and nothing private left in the published docs per
66
84
  [Ignored Doc Comments](/guides/contributing/writing-documentation/writing-api-docs.md#ignored-doc-comments).
67
85
  If you added `@internal` to an exported symbol, build that package (`pnpm --filter <pkg>
@@ -69,6 +87,15 @@ last two bullets: the checks and the label.
69
87
  different fix.
70
88
  - Every other type of doc a change touches is updated too: see the
71
89
  [Cross-Documentation Checklist](/guides/contributing/writing-documentation/index.md#cross-documentation-checklist).
90
+ When that means moving prose out of a README, remove only the sections the other page now
91
+ owns. The README keeps everything
92
+ [README structure](/guides/contributing/writing-documentation/writing-api-docs.md#readme-structure)
93
+ lists: its introduction and, for a legacy package, the alert naming the replacement; the
94
+ install line and one elevator-pitch snippet, which the landing page is meant to repeat in
95
+ more depth; and every branding block, the tagline and the `♥️ Credits` block with its style
96
+ tag.
97
+ [Keep READMEs short](/guides/contributing/writing-documentation/writing-api-docs.md#keep-readmes-short)
98
+ says why.
72
99
  - Run `pnpm lint:docs` from the repo root, then build and open the affected pages as described
73
100
  in [Previewing Your Changes](/guides/contributing/writing-documentation/index.md#previewing-your-changes).
74
101
  - Label the pull request `:label: doc` (see
@@ -77,7 +104,7 @@ last two bullets: the checks and the label.
77
104
 
78
105
  ## Gotchas
79
106
 
80
- All three are explained in the
107
+ The first three are explained in the
81
108
  [Docs Viewer README](https://github.com/warp-drive-data/warp-drive/blob/main/docs-viewer/README.md).
82
109
 
83
110
  - A page added while `pnpm start` is running is served but missing from the sidebar until you
@@ -26,11 +26,18 @@ of any `emberjs/rfcs` number:
26
26
  overwritten and can desync the two copies. Don't start `title` with "WarpDrive" — the sync bot
27
27
  adds that prefix automatically for the `emberjs/rfcs` copy and its PR title, so a local title
28
28
  that already has it would end up doubled there.
29
- 3. Open a PR labeled `:label: rfc` (see
29
+ 3. Review the draft for terseness and conciseness before opening the PR, and again after every
30
+ edit to it. Reviewers, and later implementers, read an RFC to learn what the public behavior
31
+ will be and why; anything else in it costs them time and can drift from the implementation
32
+ that ships. Omit internal implementation details unless they affect observable public
33
+ behavior, and where they do, describe the effect in brief rather than the mechanism. Keep
34
+ historical exposition minimal: enough to motivate the change, not a chronicle of how the
35
+ current behavior came to be.
36
+ 4. Open a PR labeled `:label: rfc` (see
30
37
  [Pull Request Labeling](/guides/contributing/submitting-prs.md#pull-request-labeling) for the
31
38
  PR mechanics). That label also triggers a docs-site PR preview so reviewers can read the
32
39
  rendered RFC, not just the raw markdown diff.
33
- 4. Iterate on the PR like any other design discussion. Once there is team consensus to move
40
+ 5. Iterate on the PR like any other design discussion. Once there is team consensus to move
34
41
  forward, merging the PR is what publishes the RFC — see the next section for what that
35
42
  triggers.
36
43
 
@@ -0,0 +1,7 @@
1
+ {
2
+ "title": "Docs",
3
+ "items": ["read-the-docs-as-markdown"],
4
+ "files": {
5
+ "read-the-docs-as-markdown": { "title": "Read the Docs as Markdown" }
6
+ }
7
+ }
@@ -0,0 +1,40 @@
1
+ # Read the Docs as Markdown
2
+
3
+ Use this skill whenever you need something from WarpDrive's guides, upgrade notes, or API
4
+ reference that no other skill covers: a concept, a config option, a signature, a deprecation.
5
+ The published site at `https://warp-drive.io` serves every page as plain Markdown, so you never
6
+ have to read or scrape its HTML.
7
+
8
+ ## Steps
9
+
10
+ 1. Fetch `https://warp-drive.io/llms.txt`. It is the table of contents: one absolute link per
11
+ page, grouped by section, with the page title as the link text and, where the page provides
12
+ one, a one-line description after a colon. Pick the one or two pages that match your task and
13
+ fetch only those.
14
+ 2. Fetch the page. Every link in `llms.txt` already ends in `.md` and returns raw Markdown. To
15
+ reach a page from any other URL you were given, append `.md`:
16
+ `https://warp-drive.io/guides/the-manual/requests/builders` becomes
17
+ `https://warp-drive.io/guides/the-manual/requests/builders.md`. If the URL ends in `/`, drop the slash
18
+ first (`/guides/installation/` becomes `/guides/installation.md`) or append `index.md`; both
19
+ exist.
20
+ 3. Resolve links inside a page against `https://warp-drive.io`. Cross-references in the Markdown
21
+ are root-relative and already end in `.md`, such as
22
+ `/guides/the-manual/schemas/resources/legacy-mode.md`, so following one is the same fetch with
23
+ no guessing. The `url:` line in each page's opening `---` block is the canonical URL to cite.
24
+ 4. Read the site's Markdown extensions as what they render to:
25
+ - `:::tip`, `:::info`, `:::warning`, or `:::danger` through the closing `:::` is a callout box.
26
+ Text on the opening line is the box's title.
27
+ - `:::tabs` through `:::` holds alternatives. Each `== Label` line starts one tab. When the
28
+ labels are frameworks or package managers, read only the tab that matches the app you are
29
+ working in.
30
+ - `::: code-group` through `:::` is the same for code: the `[Label]` after each fence's
31
+ language names its tab.
32
+ - Comments like `// [!code focus]` or `// [!code ++]` inside a fence are highlighting hints for
33
+ the website. Ignore them; they are not part of the code.
34
+ 5. Reach for `https://warp-drive.io/llms-full.txt` only when you need the whole corpus at once. It
35
+ concatenates every page, is a few megabytes, and each page in it opens with the same `---` /
36
+ `url:` block, so you can still tell which page a passage came from. `llms.txt` plus one page is
37
+ almost always enough.
38
+
39
+ Both `warp-drive.io` and `https://canary.warp-drive.io` are built from the repository's `main`
40
+ branch; canary is redeployed on every merge and production on demand, so canary may be newer.
package/skills/index.md CHANGED
@@ -10,6 +10,7 @@ complete a task.
10
10
  | Define a resource's shape — fields, relationships, identity — for the `Store` | `schemas/define-a-resource-schema.md` |
11
11
  | Fetch or query remote data through the `Store` so it's cached and reactive | `requests/fetch-and-cache-data.md` |
12
12
  | Re-record one holodeck mock, or review a test that sets `RECORD` | `holodeck/using-record.md` |
13
+ | Look up a guide, upgrade note, or API reference page that no row above covers — a concept, an option, a signature | `docs/read-the-docs-as-markdown.md` |
13
14
  | You're contributing to WarpDrive itself, not just consuming it as a dependency | `contributors/index.md` |
14
15
 
15
16
  Each skill file is self-contained for its task and links out to any other skill file it
@@ -19,6 +19,7 @@ Find the row below that matches what you're doing, or browse the categories in t
19
19
  | Define a resource's shape — fields, relationships, identity — for the `Store` | [Define a Resource Schema](/skills/schemas/define-a-resource-schema.md) |
20
20
  | Fetch or query remote data through the `Store` so it's cached and reactive | [Fetch and Cache Data](/skills/requests/fetch-and-cache-data.md) |
21
21
  | Re-record one holodeck mock, or review a test that sets `RECORD` | [Use RECORD in Holodeck Mocks](/skills/holodeck/using-record.md) |
22
+ | Look up a guide, upgrade note, or API reference page that no row above covers — a concept, an option, a signature | [Read the Docs as Markdown](/skills/docs/read-the-docs-as-markdown.md) |
22
23
  | You're contributing to WarpDrive itself, not just consuming it as a dependency | [Contributor Skills](/skills/contributors/index.md) |
23
24
 
24
25
  This is the same routing table an AI agent uses to find a skill — it just links out to readable