@latellu/atlas-agent-skills 0.5.0 → 0.5.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.5.0",
3
+ "version": "0.5.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.5.0",
3
+ "version": "0.5.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)",
@@ -53,15 +53,16 @@ browser-delivered code. Management usage is server-side only (API routes, script
53
53
 
54
54
  Every REST response is an envelope: `{ success, message, data?, meta?, code?, errors? }`.
55
55
  The SDK and MCP unwrap it, but two payload quirks leak through in places: `entry.data`,
56
- page `seo`, and block `data` are stored/transported as **JSON strings** (the SDK parses
57
- them for you; MCP `get_page` does not), and list `meta` uses
56
+ page `seo`, and block `data` are stored/transported as **JSON strings** (the SDK and
57
+ MCP 1.2.0 parse them for you), and list `meta` uses
58
58
  `{ total_data, current_page, page_size, total_pages, next_cursor }`.
59
59
 
60
60
  Error codes you will actually see: `UNAUTHORIZED` (401 — missing/empty/wrong-class key),
61
61
  `FORBIDDEN` (403 — missing scope or RBAC), `NOT_FOUND` (404 — also returned for
62
62
  other-workspace resources), `VALIDATION_ERROR` (400 — with field detail),
63
63
  `PAGE_TOO_DEEP` (400 — offset pagination past page 1000), and 429 rate limiting
64
- (back off exponentially; only the SDK management client retries for you).
64
+ (the SDK management client and MCP ≥ 1.2.0 retry automatically; elsewhere back off
65
+ exponentially yourself).
65
66
 
66
67
  Pagination limits: `limit` max 100, `page` max 1000; past that, switch to cursor
67
68
  pagination (`meta.next_cursor`, opaque — never construct cursors yourself; `total_data`
@@ -88,7 +88,8 @@ The MCP manage plane is now fully covered. These gaps remain:
88
88
 
89
89
  - **No automatic merge on `update_entry`** — the tool replaces `data` wholesale, so you
90
90
  must read-modify-write yourself: `get_entry` → merge your changes → `update_entry`.
91
- The management SDK offers an `update` overload that accepts a patch, but MCP does not.
91
+ (The management SDK's `update` is a full replace too this is API semantics, not an
92
+ MCP quirk.)
92
93
  - **Schema is dashboard-only.** Creating content types, fields, or block types is not
93
94
  exposed via MCP, SDK, or API. "Create a content type" = ask the user to do it in the
94
95
  dashboard, then continue.
@@ -100,8 +101,9 @@ format per field type (richtext = Tiptap HTML, relation/image = UUIDs, etc.).
100
101
 
101
102
  - **Drafts are invisible to live keys** — `list_entries(status="draft")` returning
102
103
  empty means key scoping, not an empty workspace.
103
- - **`get_entry` errors if the slug belongs to a different content type** content types
104
- used to share slug namespaces, now you get a clear error instead of silent mismatch.
104
+ - **`get_entry` looks up by slug alone** (slug-global, `content_type` is not sent to the
105
+ API) but if the entry found belongs to a different content type than you requested,
106
+ the tool returns a clear mismatch error instead of the wrong entry.
105
107
  - Every write sends a fresh auto-generated `Idempotency-Key` per call, so re-issuing a
106
108
  failed create as a *new tool call* is a new operation — check whether the first call
107
109
  actually landed (e.g. `get_entry`) before retrying creates.