@latellu/atlas-agent-skills 0.3.0 → 0.3.1
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.
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "atlas",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Work with Atlas CMS from Claude Code: bundles the Atlas MCP server (read/write content via tools) and the atlas-cms skill that teaches agents when and how to use the MCP tools, the @latellu/atlas-sdk delivery/management clients, and the @latellu/atlas-cli type generator.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Latellu",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@latellu/atlas-agent-skills",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Agent skill + MCP configuration for Atlas CMS. Works as a Claude Code plugin and as plain markdown guidance for any AI coding agent (Cursor, Codex, opencode, Gemini CLI, ...).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Latellu (https://github.com/tenriajeng)",
|
|
@@ -113,6 +113,14 @@ The real write shape (`POST/PUT /pages`) differs from what the reading API shows
|
|
|
113
113
|
- MCP `create_page`/`update_page` extra caveats: the `title` argument is ignored by the
|
|
114
114
|
backend (set `seo.title`), `seo` there accepts only `title`/`description`, and block
|
|
115
115
|
`translations`/`seo_translations` aren't expressible.
|
|
116
|
+
- **A page without blocks cannot be published** — publish returns an error requiring at
|
|
117
|
+
least one block. Combined with `block_type_id` being undiscoverable, an API-only
|
|
118
|
+
workflow can create and edit pages but **never publish a new one**; publishing needs
|
|
119
|
+
someone to add a block in the dashboard first (or block-type UUIDs supplied to you).
|
|
120
|
+
- **The write plane has no reads**, and write responses don't echo `seo_translations` —
|
|
121
|
+
you cannot fully verify a translation write without a live key for the same workspace.
|
|
122
|
+
Trick: `PUT /pages/:slug` with body `{}` is a safe no-op that returns the page's
|
|
123
|
+
current base state (status + seo) — the only "read" available on the management plane.
|
|
116
124
|
|
|
117
125
|
## Practical write checklist
|
|
118
126
|
|
|
@@ -108,3 +108,7 @@ matters double here because MCP swallows per-field validation errors.
|
|
|
108
108
|
actually landed (e.g. `get_entry`) before retrying creates.
|
|
109
109
|
- One MCP server = one workspace (the key's). Multi-workspace work needs one server
|
|
110
110
|
registration per workspace.
|
|
111
|
+
- **The server never checks that the live and mgmt keys belong to the same workspace.**
|
|
112
|
+
A mismatched pair is maximally confusing: schema and reads come from workspace A while
|
|
113
|
+
every write 404s ("content type not found") against workspace B. If reads succeed but
|
|
114
|
+
writes 404 on types you just listed, suspect mismatched keys before anything else.
|
|
@@ -67,7 +67,7 @@ All idOrSlug parameters accept either the entry ID or its slug.
|
|
|
67
67
|
// (seo_translations, block translations, nesting) and the block_type_id caveat.
|
|
68
68
|
await client.pages.create({ slug: "landing", seo: { title: "Landing" }, blocks: [...] });
|
|
69
69
|
await client.pages.update("landing", { seo: { title: "Landing v2" } });
|
|
70
|
-
await client.pages.publish("landing");
|
|
70
|
+
await client.pages.publish("landing"); // fails unless the page has ≥1 block — see authoring.md
|
|
71
71
|
await client.pages.unpublish("landing"); // pages have the FULL lifecycle here
|
|
72
72
|
await client.pages.archive("landing"); // (unlike the MCP tools)
|
|
73
73
|
await client.pages.schedule("landing", "2026-08-01T09:00:00Z");
|