pageship 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/dist/cli.mjs CHANGED
@@ -724,7 +724,7 @@ function isRevisionId(value) {
724
724
  return typeof value === "string" && /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}(?![\s\S])/iu.test(value);
725
725
  }
726
726
  /** Same readable normalized Git remote grammar as the Effect contract. */
727
- function isProject(value) {
727
+ function isRepository(value) {
728
728
  return typeof value === "string" && value.length <= 512 && /^[a-z0-9._-]+(?::[0-9]{1,5})?(?:\/(?!\.{1,2}(?:\/|$))[^\x00-\x20\x7f/\\?#]+)+(?![\s\S])/u.test(value);
729
729
  }
730
730
  function isCliVersion(value) {
@@ -757,7 +757,7 @@ function normalizeDocument(value) {
757
757
  return validDocument(normalized) ? normalized : void 0;
758
758
  }
759
759
  function validDocument(value) {
760
- return record(value) && isDocumentId(value.id) && typeof value.slug === "string" && /^[a-z0-9]+(?:-[a-z0-9]+)*(?![\s\S])/u.test(value.slug) && validTitle(value.title) && typeof value.sourcePath === "string" && value.sourcePath.length <= 1024 && /^(?!\/)(?!.*(?:^|\/)\.{1,2}(?:\/|$))(?!.*\/\/)[^\x00-\x1f\x7f\\:]*\.[hH][tT][mM][lL]?(?![\s\S])/u.test(value.sourcePath) && (value.project === null || isProject(value.project)) && (value.visibility === "private" || value.visibility === "public") && isRevisionId(value.revisionId) && typeof value.byteLength === "number" && Number.isSafeInteger(value.byteLength) && value.byteLength > 0 && typeof value.createdAt === "number" && Number.isSafeInteger(value.createdAt) && value.createdAt >= 0 && typeof value.publishedAt === "number" && Number.isSafeInteger(value.publishedAt) && value.publishedAt >= 0 && typeof value.url === "string" && new RegExp(`^https://[a-z0-9-]+\\.${workspaceDomainPattern}/d/${value.id}-${value.slug}$`, "u").test(value.url);
760
+ return record(value) && isDocumentId(value.id) && typeof value.slug === "string" && /^[a-z0-9]+(?:-[a-z0-9]+)*(?![\s\S])/u.test(value.slug) && validTitle(value.title) && typeof value.sourcePath === "string" && value.sourcePath.length <= 1024 && /^(?!\/)(?!.*(?:^|\/)\.{1,2}(?:\/|$))(?!.*\/\/)[^\x00-\x1f\x7f\\:]*\.[hH][tT][mM][lL]?(?![\s\S])/u.test(value.sourcePath) && (value.repository === null || isRepository(value.repository)) && (value.visibility === "private" || value.visibility === "public") && isRevisionId(value.revisionId) && typeof value.byteLength === "number" && Number.isSafeInteger(value.byteLength) && value.byteLength > 0 && typeof value.createdAt === "number" && Number.isSafeInteger(value.createdAt) && value.createdAt >= 0 && typeof value.publishedAt === "number" && Number.isSafeInteger(value.publishedAt) && value.publishedAt >= 0 && typeof value.url === "string" && new RegExp(`^https://[a-z0-9-]+\\.${workspaceDomainPattern}/d/${value.id}-${value.slug}$`, "u").test(value.url);
761
761
  }
762
762
  function validRevision(value, documentId) {
763
763
  return record(value) && isRevisionId(value.id) && typeof value.createdAt === "number" && Number.isSafeInteger(value.createdAt) && value.createdAt >= 0 && typeof value.byteLength === "number" && Number.isSafeInteger(value.byteLength) && value.byteLength > 0 && typeof value.isCurrent === "boolean" && (value.cliVersion === null || isCliVersion(value.cliVersion)) && typeof value.url === "string" && new RegExp(`^https://[a-z0-9-]+\\.${workspaceDomainPattern}/d/${documentId}-[a-z0-9]+(?:-[a-z0-9]+)*/revisions/${value.id}$`, "u").test(value.url);
@@ -923,7 +923,7 @@ async function publishDocument(baseUrl, input, options = {}) {
923
923
  body: new Blob([new Uint8Array(input.bytes)], { type: "text/html" }),
924
924
  query: {
925
925
  sourcePath: input.sourcePath,
926
- project: input.project,
926
+ repository: input.repository,
927
927
  cliVersion: input.cliVersion,
928
928
  action: input.action,
929
929
  documentId: input.documentId,
@@ -962,7 +962,7 @@ async function getWorkspace(baseUrl, options = {}) {
962
962
  });
963
963
  if (!response?.ok) throw new Error("Could not load your workspace.", { cause: error });
964
964
  if (data?.status === "signed_out" || data?.status === "uninvited") return { status: data.status };
965
- if (data?.status === "admitted" && typeof data.user?.id === "string" && data.user.id.length > 0 && typeof data.user?.name === "string" && (data.user.login === void 0 || typeof data.user.login === "string") && typeof data.workspace?.id === "string" && data.workspace.id.length > 0 && (data.address === void 0 || data.address === null || isWorkspaceAddress(data.address))) return data;
965
+ if (data?.status === "admitted" && typeof data.user?.id === "string" && data.user.id.length > 0 && typeof data.user?.name === "string" && (data.user.login === void 0 || typeof data.user.login === "string") && (data.user.githubAccountId === void 0 || typeof data.user.githubAccountId === "string" && /^[1-9]\d*$/u.test(data.user.githubAccountId)) && typeof data.workspace?.id === "string" && data.workspace.id.length > 0 && (data.address === void 0 || data.address === null || isWorkspaceAddress(data.address))) return data;
966
966
  throw new Error("Invalid workspace response.");
967
967
  }
968
968
  function validateCompatibility(value) {
@@ -1323,7 +1323,7 @@ const outcomes = {
1323
1323
  choice_required: "pending",
1324
1324
  address_required: "pending",
1325
1325
  source_collision: "pending",
1326
- project_mismatch: "pending",
1326
+ repository_mismatch: "pending",
1327
1327
  marker_unavailable: "pending",
1328
1328
  revision_conflict: "pending",
1329
1329
  cancelled: "pending",
@@ -1412,7 +1412,7 @@ function commandLine(command, args) {
1412
1412
  }
1413
1413
  //#endregion
1414
1414
  //#region package.json
1415
- var version = "0.2.0";
1415
+ var version = "0.3.0";
1416
1416
  //#endregion
1417
1417
  //#region src/publish.ts
1418
1418
  const execute = promisify(execFile);
@@ -1424,7 +1424,7 @@ async function sourceMetadata(file) {
1424
1424
  const path = await realpath(resolve(file));
1425
1425
  const cwd = await realpath(process.cwd());
1426
1426
  let root = contained(cwd, path) ? cwd : dirname(path);
1427
- let project;
1427
+ let repository;
1428
1428
  try {
1429
1429
  const git = async (...args) => (await execute("git", [
1430
1430
  "-C",
@@ -1445,8 +1445,8 @@ async function sourceMetadata(file) {
1445
1445
  "ssh:",
1446
1446
  "git:"
1447
1447
  ].includes(url.protocol) && url.hostname) {
1448
- const repository = `${url.hostname.toLowerCase()}${url.port ? `:${url.port}` : ""}/${url.pathname.replace(/^\/+|\/+$/gu, "").replace(/\.git$/u, "")}`;
1449
- if (isProject(repository)) project = repository;
1448
+ const normalized = `${url.hostname.toLowerCase()}${url.port ? `:${url.port}` : ""}/${url.pathname.replace(/^\/+|\/+$/gu, "").replace(/\.git$/u, "")}`;
1449
+ if (isRepository(normalized)) repository = normalized;
1450
1450
  }
1451
1451
  }
1452
1452
  } catch {}
@@ -1455,7 +1455,7 @@ async function sourceMetadata(file) {
1455
1455
  return {
1456
1456
  path,
1457
1457
  sourcePath,
1458
- project
1458
+ repository
1459
1459
  };
1460
1460
  }
1461
1461
  async function fileBytes(path, limit) {
@@ -1653,7 +1653,7 @@ async function publish(options) {
1653
1653
  expectedRevisionId: entry.revisionId
1654
1654
  };
1655
1655
  automatic = "manifest";
1656
- } else if (target.project === (source.project ?? null)) {
1656
+ } else if (target.repository === (source.repository ?? null)) {
1657
1657
  action = {
1658
1658
  action: "revise",
1659
1659
  documentId: target.id,
@@ -1661,9 +1661,9 @@ async function publish(options) {
1661
1661
  };
1662
1662
  automatic = "marker";
1663
1663
  } else return {
1664
- status: "project_mismatch",
1664
+ status: "repository_mismatch",
1665
1665
  document: target,
1666
- message: `This file's marker names ${target.url}, a document from ${target.project ?? "a loose file"}, but this file ${source.project ? `belongs to ${source.project}` : "is a loose file"}. No document changed. To revise that document anyway, publish with --revise ${target.id} --expected-revision ${target.revisionId}, or use --new for a separate document. Use --json for complete follow-up arguments.`,
1666
+ message: `This file's marker names ${target.url}, a document from ${target.repository ?? "a loose file"}, but this file ${source.repository ? `belongs to ${source.repository}` : "is a loose file"}. No document changed. To revise that document anyway, publish with --revise ${target.id} --expected-revision ${target.revisionId}, or use --new for a separate document. Use --json for complete follow-up arguments.`,
1667
1667
  resolutions: resolutions(options.file, contextArgs, [target])
1668
1668
  };
1669
1669
  } else if (detect) {
@@ -1691,7 +1691,7 @@ async function publish(options) {
1691
1691
  const result = await publishDocument(server, {
1692
1692
  bytes: uploaded,
1693
1693
  sourcePath: source.sourcePath,
1694
- ...source.project ? { project: source.project } : {},
1694
+ ...source.repository ? { repository: source.repository } : {},
1695
1695
  cliVersion: version,
1696
1696
  idempotencyKey,
1697
1697
  ...proposal
@@ -2191,7 +2191,7 @@ function listDocuments(options) {
2191
2191
  ...next ? { next } : {},
2192
2192
  message: [
2193
2193
  page.documents.length ? "Documents:" : options.cursor ? "No more documents." : "No documents.",
2194
- ...page.documents.map((document) => `${document.id} ${document.visibility} ${document.title}\n` + (document.project ? ` project ${document.project}\n` : "") + ` source ${document.sourcePath}\n current revision ${document.revisionId}\n ${document.url}`),
2194
+ ...page.documents.map((document) => `${document.id} ${document.visibility} ${document.title}\n` + (document.repository ? ` repository ${document.repository}\n` : "") + ` source ${document.sourcePath}\n current revision ${document.revisionId}\n ${document.url}`),
2195
2195
  ...next ? [`More documents: run ${commandLine(next.command, next.args)}`] : []
2196
2196
  ].join("\n")
2197
2197
  };
@@ -2346,7 +2346,7 @@ const isSkillName = (name) => /^pageship(?:-[a-z0-9-]+)?$/u.test(name);
2346
2346
  const recommendedSkills = ["frontend-design", "design-taste-frontend"];
2347
2347
  /** The oldest Node major that runs the authoring skills' scripts. */
2348
2348
  const authoringNodeMajor = 20;
2349
- const setupGuide = "https://pageship.dev/setup-guide";
2349
+ const setupGuide = "https://pageship.dev/setup-guide.md";
2350
2350
  const installNext = {
2351
2351
  command: "skills",
2352
2352
  args: ["install"]
@@ -2457,7 +2457,7 @@ async function findMissing(environment) {
2457
2457
  function notFound(missing) {
2458
2458
  if (missing.length === 0) return void 0;
2459
2459
  const named = missing.map((entry) => entry === "node" ? `Node ${authoringNodeMajor} or later` : entry);
2460
- return `${named.length > 1 ? `${named.slice(0, -1).join(", ")} and ${named.at(-1)}` : named[0]} ${named.length > 1 ? "were" : "was"} not found. The setup guide at ${setupGuide} covers them.`;
2460
+ return `${named.length > 1 ? `${named.slice(0, -1).join(", ")} and ${named.at(-1)}` : named[0]} ${named.length > 1 ? "were" : "was"} not found. The setup guide covers them: download ${setupGuide} and read all of it.`;
2461
2461
  }
2462
2462
  /**
2463
2463
  * Whether the Pageship skills in ~/.agents/skills are missing, current, or older than this
@@ -3,7 +3,7 @@ name: pageship
3
3
  description: Publish an HTML file to Pageship and manage what is published. Use when the user asks to publish, share or get a link to a document, update its published copy, change its visibility, list, inspect history, download or restore published documents, or sign in to Pageship. To write, edit, rename or move a document, load pageship-docs instead.
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.2.0"
6
+ version: "0.3.0"
7
7
  ---
8
8
 
9
9
  # Pageship
@@ -18,7 +18,7 @@ A document marker in a file (`<!-- pageship:v1 document=<id> -->`) records that
18
18
 
19
19
  ## Write or change a document
20
20
 
21
- When the user asks to write, change, rename or move a document, load `pageship-docs` and follow it, even when the same request asks you to publish. When it hands over the file, publish it if the user asked. If `pageship-docs` isn't installed, say so and offer the setup guide at https://pageship.dev/setup-guide, which installs it. If the user declines, write the document without the authoring skills, then publish it if the user asked.
21
+ When the user asks to write, change, rename or move a document, load `pageship-docs` and follow it, even when the same request asks you to publish. When it hands over the file, publish it if the user asked. If `pageship-docs` isn't installed, say so and offer the setup guide, which installs it. Get it as [Install the CLI](#install-the-cli) describes. If the user declines, write the document without the authoring skills, then publish it if the user asked.
22
22
 
23
23
  ## Reading a result
24
24
 
@@ -38,7 +38,7 @@ A follow-up has a `command` and an `args` array. Run it as `pageship --json <com
38
38
 
39
39
  ## Install the CLI
40
40
 
41
- If the shell can't find `pageship`, tell the user the Pageship CLI isn't installed and offer to install it. Only with their consent, follow the setup guide at https://pageship.dev/setup-guide. It asks before it changes their environment.
41
+ If the shell can't find `pageship`, tell the user the Pageship CLI isn't installed and offer to install it. Only with their consent, follow the setup guide. Download https://pageship.dev/setup-guide.md with curl or a similar command and read all of it, since a fetch tool may hand you only a summary. The guide asks before it changes their environment.
42
42
 
43
43
  ## Check readiness
44
44
 
@@ -62,7 +62,7 @@ pageship --json skills install
62
62
 
63
63
  On `skills_installed`, they are in `~/.agents/skills`, and linked from `~/.claude/skills` when Claude Code is set up. On `skills_modified`, nothing was written: the folders in `folders` were changed after the CLI installed them, or the CLI has no record of them. Show the user those folders. Run `resolutions.force` only if they agree to replace them and lose those changes.
64
64
 
65
- Both results, and `status`, list in `missing` what the CLI looked for and did not find: the recommended skills `frontend-design` and `design-taste-frontend`, and `node`, Node 20 or later, which the authoring skills' scripts need. The CLI never installs them, and they never change the outcome. Mention them, and offer the setup guide at https://pageship.dev/setup-guide.
65
+ Both results, and `status`, list in `missing` what the CLI looked for and did not find: the recommended skills `frontend-design` and `design-taste-frontend`, and `node`, Node 20 or later, which the authoring skills' scripts need. The CLI never installs them, and they never change the outcome. Mention them, and offer the setup guide. Get it as [Install the CLI](#install-the-cli) describes.
66
66
 
67
67
  ## Sign in
68
68
 
@@ -88,9 +88,9 @@ Set the shell placeholder `PAGESHIP_FILE` to one nonempty `.html` or `.htm` file
88
88
  pageship --json publish "$PAGESHIP_FILE"
89
89
  ```
90
90
 
91
- The CLI records each published file's real path in its publish manifest on this machine, so running the same command again for that file revises its document without a choice, and a fresh session needs no remembered document ID. Inside a Git checkout with an origin remote, the file belongs to a project. A project file without a manifest entry, such as one in another checkout, is looked up by its project and repository-relative path on the server. `document.project` shows the readable remote, and it is `null` for a loose file outside any project.
91
+ The CLI records each published file's real path in its publish manifest on this machine, so running the same command again for that file revises its document without a choice, and a fresh session needs no remembered document ID. Inside a Git checkout with an origin remote, the file belongs to a repository. A file in a repository without a manifest entry, such as one in another checkout, is looked up by its repository and repository-relative path on the server. `document.repository` shows the readable remote, and it is `null` for a loose file outside any repository.
92
92
 
93
- After a successful upload the CLI adds the document marker to the end of the local file, so the file and the published revision match. The marker lets the file find its document after a rename or a move, and on another machine in a checkout of the same project. Keep the marker when you edit or regenerate the file, and do not write or change it yourself. To publish a file exactly as it is, add `--no-marker`.
93
+ After a successful upload the CLI adds the document marker to the end of the local file, so the file and the published revision match. The marker lets the file find its document after a rename or a move, and on another machine in a checkout of the same repository. Keep the marker when you edit or regenerate the file, and do not write or change it yourself. To publish a file exactly as it is, add `--no-marker`.
94
94
 
95
95
  ### Report the publish
96
96
 
@@ -104,7 +104,7 @@ Keep `idempotencyKey` only while you resolve an uncertain attempt.
104
104
 
105
105
  ### When the publish stops for a decision
106
106
 
107
- On `project_mismatch`, the file's marker names a document from another project, for example a fork. Nothing changed. Show the user the returned `document` and ask whether to revise it with the `resolutions.revise` entry or create a separate document with `resolutions.new`.
107
+ On `repository_mismatch`, the file's marker names a document from another repository, for example a fork. Nothing changed. Show the user the returned `document` and ask whether to revise it with the `resolutions.revise` entry or create a separate document with `resolutions.new`.
108
108
 
109
109
  On `marker_unavailable`, the marker names a document that was not found or is not the user's, and nothing was uploaded. Ask before running the returned `next`, which creates a separate document.
110
110
 
@@ -120,7 +120,7 @@ An unmarked loose file is not matched by path, so on another machine, or from an
120
120
  pageship --json publish "$PAGESHIP_FILE" --revise "$PAGESHIP_DOCUMENT" --expected-revision "$PAGESHIP_REVISION"
121
121
  ```
122
122
 
123
- This works for any document the user owns, even when the file moved or belongs to another project. Another account's document returns `unavailable`. Later plain publishes of this file revise the named document, and its marker names it. After `--new`, they revise the new one.
123
+ This works for any document the user owns, even when the file moved or belongs to another repository. Another account's document returns `unavailable`. Later plain publishes of this file revise the named document, and its marker names it. After `--new`, they revise the new one.
124
124
 
125
125
  ## Share a document
126
126
 
@@ -3,7 +3,7 @@ name: pageship-chart
3
3
  description: Later step of pageship-docs: for a request to write or edit a document, load pageship-docs first; load this skill first only when the user names it. Pattern for charts in a Pageship HTML document, loaded by a pageship- kind skill before it draws a chart.
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.2.0"
6
+ version: "0.3.0"
7
7
  ---
8
8
 
9
9
  # Chart
@@ -3,7 +3,7 @@ name: pageship-code-block
3
3
  description: Later step of pageship-docs: for a request to write or edit a document, load pageship-docs first; load this skill first only when the user names it. Pattern for code in a Pageship HTML document, such as source code, commands, configuration or logs, loaded by a pageship- kind skill before the first code block.
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.2.0"
6
+ version: "0.3.0"
7
7
  ---
8
8
 
9
9
  # Code block
@@ -3,7 +3,7 @@ name: pageship-decision-record
3
3
  description: HTML decision records, as the second step of pageship-docs. For any request to record, write, regenerate, edit or move a decision, load pageship-docs first; load this skill first only when the user names it.
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.2.0"
6
+ version: "0.3.0"
7
7
  ---
8
8
 
9
9
  # Decision record
@@ -3,7 +3,7 @@ name: pageship-diagram
3
3
  description: Later step of pageship-docs: for a request to write or edit a document, load pageship-docs first; load this skill first only when the user names it. Pattern for diagrams in a Pageship HTML document, such as a process, a timeline, a system map or states, loaded by a pageship- kind skill before it draws a diagram.
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.2.0"
6
+ version: "0.3.0"
7
7
  ---
8
8
 
9
9
  # Diagram
@@ -3,7 +3,7 @@ name: pageship-docs
3
3
  description: First step for any document people read, such as a report, plan, spec, explainer, review, decision record or slide deck, in HTML or Markdown. Load it before any other pageship- skill. Use when the user asks for one of these documents, asks to regenerate, redesign, edit, rename, move or copy an HTML source file, or asks to record whether they want HTML or Markdown.
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.2.0"
6
+ version: "0.3.0"
7
7
  ---
8
8
 
9
9
  # Pageship documents
@@ -3,7 +3,7 @@ name: pageship-explainer
3
3
  description: HTML explainers, as the second step of pageship-docs. For any request to explain how something works, or to write, regenerate, edit or move an explainer, load pageship-docs first; load this skill first only when the user names it.
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.2.0"
6
+ version: "0.3.0"
7
7
  ---
8
8
 
9
9
  # Explainer
@@ -3,7 +3,7 @@ name: pageship-interaction
3
3
  description: Later step of pageship-docs: for a request to write or edit a document, load pageship-docs first; load this skill first only when the user names it. Pattern for controls in a Pageship HTML document, such as stepping through stages, tracing a path, tabs, filters, revealing detail and pointer states on charts and diagrams, loaded by a pageship- kind skill before it adds any control.
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.2.0"
6
+ version: "0.3.0"
7
7
  ---
8
8
 
9
9
  # Interaction
@@ -3,7 +3,7 @@ name: pageship-key-figures
3
3
  description: Later step of pageship-docs: for a request to write or edit a document, load pageship-docs first; load this skill first only when the user names it. Pattern for the few numbers and callouts a Pageship HTML document opens with, loaded by a pageship- kind skill before it writes key figures.
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.2.0"
6
+ version: "0.3.0"
7
7
  ---
8
8
 
9
9
  # Key figures
@@ -3,7 +3,7 @@ name: pageship-media
3
3
  description: Later step of pageship-docs: for a request to write or edit a document, load pageship-docs first; load this skill first only when the user names it. Pattern for images, video and audio in a Pageship HTML document, loaded by a pageship- kind skill before it shows media.
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.2.0"
6
+ version: "0.3.0"
7
7
  ---
8
8
 
9
9
  # Media
@@ -3,7 +3,7 @@ name: pageship-motion
3
3
  description: Later step of pageship-docs: for a request to write or edit a document, load pageship-docs first; load this skill first only when the user names it. Pattern for animation and transitions in a Pageship HTML document, such as playing a change over time or moving a marker along a path, loaded by a pageship- kind skill before anything on the page moves.
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.2.0"
6
+ version: "0.3.0"
7
7
  ---
8
8
 
9
9
  # Motion
@@ -3,7 +3,7 @@ name: pageship-plan
3
3
  description: HTML plans, as the second step of pageship-docs. For any request to write, regenerate, edit or move a plan, load pageship-docs first; load this skill first only when the user names it.
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.2.0"
6
+ version: "0.3.0"
7
7
  ---
8
8
 
9
9
  # Plan
@@ -3,7 +3,7 @@ name: pageship-report
3
3
  description: HTML reports, as the second step of pageship-docs. For any request to write, regenerate, edit or move a report, load pageship-docs first; load this skill first only when the user names it.
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.2.0"
6
+ version: "0.3.0"
7
7
  ---
8
8
 
9
9
  # Report
@@ -3,7 +3,7 @@ name: pageship-review-report
3
3
  description: HTML review reports, as the second step of pageship-docs. For any request to review a change or a plan and write up the findings, or to write, regenerate, edit or move a review report, load pageship-docs first; load this skill first only when the user names it.
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.2.0"
6
+ version: "0.3.0"
7
7
  ---
8
8
 
9
9
  # Review report
@@ -3,7 +3,7 @@ name: pageship-slide-deck
3
3
  description: HTML slide decks, as the second step of pageship-docs. For any request to make slides or a presentation, or to regenerate, edit or move a deck, load pageship-docs first; load this skill first only when the user names it.
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.2.0"
6
+ version: "0.3.0"
7
7
  ---
8
8
 
9
9
  # Slide deck
@@ -3,7 +3,7 @@ name: pageship-spec
3
3
  description: HTML specs, as the second step of pageship-docs. For any request to write, regenerate, edit or move a spec, load pageship-docs first; load this skill first only when the user names it.
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.2.0"
6
+ version: "0.3.0"
7
7
  ---
8
8
 
9
9
  # Spec
@@ -3,7 +3,7 @@ name: pageship-table
3
3
  description: Later step of pageship-docs: for a request to write or edit a document, load pageship-docs first; load this skill first only when the user names it. Pattern for tables in a Pageship HTML document, loaded by a pageship- kind skill before it writes a table.
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.2.0"
6
+ version: "0.3.0"
7
7
  ---
8
8
 
9
9
  # Table
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pageship",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Pageship CLI for checking server API compatibility.",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {