@typeroll/mcp-server 0.45.76 → 0.45.77

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/init.js CHANGED
@@ -48,7 +48,7 @@ export async function runInitCli(args) {
48
48
  try {
49
49
  const result = await runInit({ dir, update, recipes, client });
50
50
  console.log(JSON.stringify(result, null, 2));
51
- console.log('Next: fill brief/, connect hosted MCP at https://app.typeroll.com/api/mcp?tools=compact, create/select your Site, record its IDs/Version in typeroll.json, then run typeroll doctor. Local MCP uses an injected TYPEROLL_API_KEY; no key is stored by init. See README.md.');
51
+ console.log('Next: read AGENTS.md. For guidance, start/resume workflows/interview.md; otherwise use workflows/new-site.md or workflows/migration.md. Record decisions in brief/, connect hosted MCP at https://app.typeroll.com/api/mcp?tools=compact, create/select your Site, record its IDs/Version in typeroll.json, then run typeroll doctor. Local MCP uses an injected TYPEROLL_API_KEY; no key is stored by init. See README.md.');
52
52
  return 0;
53
53
  }
54
54
  catch {
package/dist/version.js CHANGED
@@ -8,4 +8,4 @@
8
8
  //
9
9
  // Keep it in lockstep with package.json: tests/version.test.ts asserts
10
10
  // VERSION === package.json.version, so a bump that forgets this line fails CI.
11
- export const VERSION = '0.45.76';
11
+ export const VERSION = '0.45.77';
package/dist/workspace.js CHANGED
@@ -3,6 +3,7 @@ import path from 'node:path';
3
3
  import { createHash } from 'node:crypto';
4
4
  import { z } from 'zod';
5
5
  import { VERSION } from './version.js';
6
+ import { BUNDLED_WORKSPACE_TEMPLATES } from './bundled-content.js';
6
7
  import { ApiError, TyperollClient } from './client.js';
7
8
  export const workspaceSchema = z.object({
8
9
  schema_version: z.literal(1),
@@ -20,11 +21,21 @@ const hash = (value) => createHash('sha256').update(value).digest('hex');
20
21
  export const ignores = ['.typeroll/', '.env', '.env.*', '!.env.example', '.mcp.json', '.cursor/mcp.json', '.vscode/mcp.json', 'qa/reports/', 'sources/private/'];
21
22
  export const agentInstructions = `# Working on this website
22
23
 
23
- Read typeroll.json, brief/ and decisions.md. Confirm the portal, Organization,
24
+ Read typeroll.json, brief/site.md, brief/rules.md and decisions.md first. Read
25
+ other brief/ files and workflows/ only when relevant. Confirm the portal, Organization,
24
26
  Site and working Version before writes. This workspace is not the generated
25
27
  publication repository. The CMS owns current content and configuration; local
26
28
  sources are proposals unless the user explicitly adopts them.
27
29
 
30
+ ## Guided start
31
+
32
+ When the owner needs guidance or a material decision is missing, start or resume
33
+ workflows/interview.md. Read brief/interview.md and existing answers first; ask
34
+ one short question at a time and save progress. Do not repeat confirmed questions
35
+ or treat silence as approval. For a complete brief, proceed directly to
36
+ workflows/new-site.md or workflows/migration.md. All kickoff prompts live here
37
+ in the workspace; public docs explain the flow and link to these source files.
38
+
28
39
  ## Discover only what the task needs
29
40
 
30
41
  With compact MCP, search_tools then describe_tool; call_read_tool,
@@ -60,12 +71,23 @@ Public documentation: https://typeroll.com/docs/llms.txt
60
71
  ## Migrations
61
72
 
62
73
  Read tr-migration-evidence, then the source-specific recipe (tr-migrate-wp,
63
- tr-import-url, tr-migrate-astro or tr-migrate-multisite). Record preserve or renew
64
- intent in brief/migration.md; ask if unclear. Standard blocks first, reviewed
74
+ tr-import-url, tr-migrate-astro or tr-migrate-multisite). Record text_intent and design_intent separately as preserve or renew
75
+ in brief/migration.md; design includes images. Ask if either is unclear. Standard blocks first, reviewed
65
76
  custom types next, documented HTML exceptions last. Preserve or meaningfully
66
77
  redirect every old public URL. Import completion is not block reconstruction
67
- or launch acceptance. Compare preserve work to the source, renew work to the
68
- approved design/content brief. Discover tools and recipes on demand.
78
+ or launch acceptance. Compare text and design/images separately: preserved dimensions to the source,
79
+ renewed dimensions to their approved brief. New design never permits rewriting preserved text. Start with workflows/migration.md for the kickoff
80
+ prompt. The agent rebuilds imported HTML using ordinary block tools; the owner
81
+ does not need to manually convert each Page. No automatic converter is available.
82
+ Discover tools and recipes on demand.
83
+
84
+ ## Project rules and search strategy
85
+
86
+ Record the owner's preferences and durable constraints in brief/rules.md; put
87
+ approved search intent, topic coverage and URL/indexing strategy in brief/seo.md.
88
+ These are project decisions, not CMS settings or permission to publish. If a
89
+ request conflicts with an agreed rule, ask and record the resulting decision.
90
+ Use workflows/README.md to find the relevant routine, not load every recipe.
69
91
 
70
92
  ## Everyday requests
71
93
 
@@ -82,12 +104,15 @@ Store credentials in the client's private settings or injected environment.
82
104
  Run the workspace doctor after setup and after changing the binding.
83
105
  `;
84
106
  export const workspaceTemplates = {
107
+ ...BUNDLED_WORKSPACE_TEMPLATES,
85
108
  'AGENTS.md': agentInstructions,
86
- 'README.md': `# Website workspace\n\nKeep project intent here; edit the website through Typeroll CMS.\n\n1. Fill in brief/site.md and brief/brand.md.\n2. Connect hosted MCP at https://app.typeroll.com/api/mcp?tools=compact.\n3. Use an Organization key to create a site, or select an existing one.\n4. Record its IDs and working version in typeroll.json. No secrets belong there.\n5. Run npx @typeroll/mcp-server doctor . (inject TYPEROLL_API_KEY privately).\n\nStart guide: https://typeroll.com/docs/getting-started/agent-workspace/\n\nUpdate the generated scaffold with npx @typeroll/mcp-server init . --update.\nEdited files are preserved and reported for manual reconciliation. Optional local\nrecipes: init . --recipes. They are reference Markdown, not automatically loaded.\n`,
109
+ 'README.md': `# Website workspace\n\nKeep project intent here; edit the website through Typeroll CMS.\n\n1. Read AGENTS.md. For guidance, ask your agent to start or resume workflows/interview.md. Otherwise use workflows/new-site.md or workflows/migration.md. Save confirmed goals, rules and SEO strategy in brief/; record text and design/image choices separately for migrations.\n2. Connect hosted MCP at https://app.typeroll.com/api/mcp?tools=compact.\n3. Use an Organization key to create a site, or select an existing one.\n4. Record its IDs and working version in typeroll.json. No secrets belong there.\n5. Run npx @typeroll/mcp-server doctor . (inject TYPEROLL_API_KEY privately).\n\nStart guide: https://typeroll.com/docs/getting-started/agent-workspace/\n\nUpdate the generated scaffold with npx @typeroll/mcp-server init . --update.\nEdited files are preserved and reported for manual reconciliation. Optional local\nrecipes: init . --recipes. They are reference Markdown, not automatically loaded.\n`,
87
110
  'brief/site.md': '# Site brief\n\n## Purpose and audience\n\n## Languages and scope\n\n## Primary user journeys\n\n## Content authority and sources\n\n## Editorial constraints and forbidden internal markers\n',
88
111
  'brief/brand.md': '# Brand\n\n## Voice and tone\n\n## Visual direction and references\n\n## Typography, colors and image policy\n\n## Desktop and mobile navigation\n\nRecord intent here; current design tokens belong in CMS settings.\n',
89
112
  'brief/content-model.md': '# Content model\n\n## Page types and routes\n\n## Fields and references\n\n## Shared templates and partials\n\n## Taxonomy and navigation\n\nUse the current CMS schema. This document describes decisions, not a second schema store.\n',
90
- 'brief/migration.md': '# Migration brief (when applicable)\n\n## Intent: preserve or renew\n\n## Source URLs, date and agreed scope\n\n## Design and content acceptance reference\n\n## Retained facts and approved content changes\n\n## Standard blocks, custom types and HTML exceptions\n\n## Old URL to preserved path or relevant redirect\n\n## Prototype and verification evidence\n\nKeep private extracts in sources/private/ and screenshots in qa/reports/.\n',
113
+ 'brief/rules.md': "# Owner preferences and project rules\n\n## Confirmed rules\n\nRecord each rule, its scope, who approved it and the date. Separate confirmed rules from proposals.\n\n## Writing and factual accuracy\n\nVoice, terminology, prohibited claims, source requirements and legal copy that must not be rewritten.\n\n## Design and editing\n\nBrand constraints, accessibility, editable content, standard/custom blocks and documented HTML exceptions.\n\n## Operations and approval\n\nWho may approve content, publication, DNS changes and messages? Credentials stay outside this repository.\n\n## Exceptions and superseded rules\n\nLink decisions.md; do not silently override a confirmed rule. Project notes do not grant permissions beyond the user's authorization or account access.\n",
114
+ 'brief/seo.md': "# SEO strategy\n\n## Business goals, audience, markets and languages\n\n## Search intent and topic coverage\n\nRecord research sources and dates. Distinguish evidence from assumptions; do not invent traffic or ranking forecasts.\n\n## Page roles and URL plan\n\nContent types, useful landing pages, taxonomy, internal links and routes to preserve or redirect. Avoid near-duplicate pages created only for keyword variants.\n\n## Indexing and canonical policy\n\nWhich pages should be indexable, public noindex, or private? Record deliberate canonical overrides and sitemap policy; actual values live in the CMS.\n\n## Editorial standards and structured data\n\nUnique useful copy, supported claims, descriptive titles and links, accessible image text, schema matching visible content. No fixed title length or word count is a hard SEO rule.\n\n## Measurement and review\n\nBaseline, analytics/consent decisions, measures of success and review dates. Never store credentials or private analytics exports here.\n",
115
+ 'workflows/README.md': "# Project routines\n\nRead only the relevant routine and discover current tool schemas through MCP.\nProject files record intent; the CMS owns current content and configuration.\n\n| Task | Project context | On-demand recipe |\n| --- | --- | --- |\n| Guided start | workflows/interview.md, brief/interview.md | Ask one question at a time; resume confirmed answers |\n| New website | workflows/new-site.md, brief/site.md, brief/brand.md, brief/content-model.md | tr-new-site, tr-starter-design |\n| Migration | workflows/migration.md, brief/migration.md | tr-migration-evidence, then tr-migrate-wp or the matching source recipe |\n| Everyday editing | brief/rules.md and the relevant Page | tr-edit-site |\n| SEO | brief/seo.md and current site settings | tr-seo |\n| New reusable block | brief/brand.md and recorded editing needs | tr-custom-blocks |\n| Verification and publication | qa/checklist.md, decisions.md | Current preview/deploy tools and publishing readiness |\n\nAdd project-specific routines here with inputs, steps, acceptance evidence and approval boundaries. Do not copy the complete Typeroll manual or private app guides. Discover enabled app guidance with read_app_documentation. Load a recipe when needed so instructions stay current and context stays small.\n",
91
116
  'decisions.md': '# Decisions\n\nRecord date, decision, reason, approved scope and alternatives when useful.\n',
92
117
  'sources/README.md': '# Sources\n\nStore research references and copy proposals. Record source URLs and dates.\nPrivate extracts belong in ignored private/ or an approved external store.\nDo not treat local drafts as current CMS content or commit media libraries.\n',
93
118
  'scripts/README.md': '# Project automation\n\nKeep repeatable imports and QA scripts here. Use the authenticated REST API\nfor scripted work; keep credentials outside files and inject them at runtime.\nMCP remains the interactive interface. Typeroll currently has no general site CRUD CLI.\n',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typeroll/mcp-server",
3
- "version": "0.45.76",
3
+ "version": "0.45.77",
4
4
  "description": "Typeroll CMS MCP server – connect AI agents to the REST API to manage content and publish static websites.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -29,7 +29,8 @@
29
29
  "dist",
30
30
  "AGENTS.md",
31
31
  "README.md",
32
- "skills"
32
+ "skills",
33
+ "workspace-templates"
33
34
  ],
34
35
  "scripts": {
35
36
  "gen": "node scripts/embed-content.mjs",
@@ -10,10 +10,10 @@ another MCP client) working through MCP and the public API. The portal's built-i
10
10
  AI assistant has no migration tools: it does not import, convert or verify sites.
11
11
 
12
12
  **Before import or reconstruction:** read `tr-migration-evidence` with
13
- `read_skill`. Choose preserve (platform change) or renew (new design/content),
14
- record the brief and verify one prototype per active template before bulk writes.
13
+ `read_skill`. Choose preserve or renew independently for text and design/images,
14
+ record text_intent and design_intent in the brief and verify one prototype per active template before bulk writes.
15
15
  Use standard blocks first, reviewed custom types next, rare documented HTML last.
16
- Both paths must preserve or meaningfully redirect every old public URL. That
16
+ All four combinations must preserve or meaningfully redirect every old public URL. That
17
17
  shared contract defines acceptance; this recipe only adds source-specific steps.
18
18
 
19
19
 
@@ -81,7 +81,7 @@ list_pages limit=5
81
81
  ```
82
82
 
83
83
  Read existing target data to avoid overwriting work. Compare prototypes to the
84
- source in preserve mode, or to the agreed new design in renew mode. Validate
84
+ source when design_intent is preserve, or to the agreed new design when it is renew. Review text separately. Validate
85
85
  standard/custom blocks using `tr-migration-evidence` before mass writes.
86
86
 
87
87
  ### 3. Fetch and clean each source page
@@ -123,8 +123,8 @@ omit it. Inventory PDFs, download hrefs, srcsets and backgrounds as well.
123
123
 
124
124
  **d. Adapt to the target's design.**
125
125
  Use standard blocks first, then reusable custom types with editable fields.
126
- Preserve source appearance/text in preserve mode; use the approved new design
127
- and content plan in renew mode. Raw HTML is the documented last resort.
126
+ Review appearance and text independently according to design_intent and text_intent;
127
+ compare each preserved dimension to the source and each renewed dimension to its approved brief. Raw HTML is the documented last resort.
128
128
 
129
129
  ### 4. Create pages as drafts
130
130
 
@@ -10,10 +10,10 @@ another MCP client) working through MCP and the public API. The portal's built-i
10
10
  AI assistant has no migration tools: it does not import, convert or verify sites.
11
11
 
12
12
  **Before import or reconstruction:** read `tr-migration-evidence` with
13
- `read_skill`. Choose preserve (platform change) or renew (new design/content),
14
- record the brief and verify one prototype per active template before bulk writes.
13
+ `read_skill`. Choose preserve or renew independently for text and design/images,
14
+ record text_intent and design_intent in the brief and verify one prototype per active template before bulk writes.
15
15
  Use standard blocks first, reviewed custom types next, rare documented HTML last.
16
- Both paths must preserve or meaningfully redirect every old public URL. That
16
+ All four combinations must preserve or meaningfully redirect every old public URL. That
17
17
  shared contract defines acceptance; this recipe only adds source-specific steps.
18
18
 
19
19
 
@@ -10,10 +10,10 @@ another MCP client) working through MCP and the public API. The portal's built-i
10
10
  AI assistant has no migration tools: it does not import, convert or verify sites.
11
11
 
12
12
  **Before import or reconstruction:** read `tr-migration-evidence` with
13
- `read_skill`. Choose preserve (platform change) or renew (new design/content),
14
- record the brief and verify one prototype per active template before bulk writes.
13
+ `read_skill`. Choose preserve or renew independently for text and design/images,
14
+ record text_intent and design_intent in the brief and verify one prototype per active template before bulk writes.
15
15
  Use standard blocks first, reviewed custom types next, rare documented HTML last.
16
- Both paths must preserve or meaningfully redirect every old public URL. That
16
+ All four combinations must preserve or meaningfully redirect every old public URL. That
17
17
  shared contract defines acceptance; this recipe only adds source-specific steps.
18
18
 
19
19
 
@@ -69,7 +69,7 @@ required before import; GitHub/build/domain readiness is checked separately for
69
69
  publication. Do not infer that every Site shares the same blockers.
70
70
 
71
71
  Ask explicitly:
72
- - Which intent applies per Site: preserve or renew? Which source or approved
72
+ - Which text_intent and design_intent apply per Site, each preserve or renew? Which source or approved
73
73
  prototype is the **design reference**? Build that one properly first.
74
74
  - Are the sites **translations of each other** (same page structure) or
75
75
  independent? This decides whether hreflang clusters are mechanical or
@@ -10,10 +10,10 @@ another MCP client) working through MCP and the public API. The portal's built-i
10
10
  AI assistant has no migration tools: it does not import, convert or verify sites.
11
11
 
12
12
  **Before import or reconstruction:** read `tr-migration-evidence` with
13
- `read_skill`. Choose preserve (platform change) or renew (new design/content),
14
- record the brief and verify one prototype per active template before bulk writes.
13
+ `read_skill`. Choose preserve or renew independently for text and design/images,
14
+ record text_intent and design_intent in the brief and verify one prototype per active template before bulk writes.
15
15
  Use standard blocks first, reviewed custom types next, rare documented HTML last.
16
- Both paths must preserve or meaningfully redirect every old public URL. That
16
+ All four combinations must preserve or meaningfully redirect every old public URL. That
17
17
  shared contract defines acceptance; this recipe only adds source-specific steps.
18
18
 
19
19
 
@@ -80,7 +80,7 @@ Then the ordinary preconditions:
80
80
  REST API disabled" if not — common for hardened hosts).
81
81
  - The target exists. Establish the source design baseline first, then prove
82
82
  representative target templates using `tr-migration-evidence`. Preserve
83
- appearance in preserve mode; use the approved design/content brief in renew mode.
83
+ appearance when design_intent is preserve; use the approved design brief when it is renew. Review text against its separate choice.
84
84
  - If the target already has content, you must NOT clobber it — always
85
85
  `list_pages` first and only write to slugs that don't already exist.
86
86
  Pass the slug explicitly: `create_page` then refuses an address that is
@@ -165,10 +165,10 @@ c. Migrate referenced images with `upload_media_from_url`. The customer's
165
165
  media reference only after verification. Stop and report a failed required
166
166
  transfer; do not silently hotlink the WordPress source.
167
167
 
168
- The managed importer stores cleaned HTML. Typeroll does not convert HTML into blocks, and `set_page_mode` never rewrites HTML. Pages move to blocks only when someone rebuilds them with blocks.
168
+ The managed importer stores cleaned HTML. Typeroll does not convert HTML into blocks, and `set_page_mode` never rewrites HTML. You, the external agent, rebuild the imported content with ordinary block tools. The owner does not need to convert every Page manually. There is no editor conversion preview; it was removed in Core 0.2.58. Preserve the complete source before switching modes and never publish the empty intermediate Page.
169
169
 
170
170
  d. Rebuild into editable blocks according to the selected intent. Preserve exact
171
- wording in preserve mode; track approved changes in renew mode. Map headings,
171
+ wording when text_intent is preserve; track approved changes when it is renew, independently of design. Map headings,
172
172
  prose, images, buttons and layout to standard fields first, then create
173
173
  reviewed custom types where needed. Use raw HTML only for a documented,
174
174
  exceptional fragment. Preserve anchors and map every old URL in either mode.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: tr-migration-evidence
3
- description: Choose preserve or renew intent, map standard and custom blocks, preserve old URLs, and verify content, design and behavior before migration acceptance.
3
+ description: Choose text and design/image preservation independently, map standard and custom blocks, preserve old URLs, and verify content, design and behavior before migration acceptance.
4
4
  ---
5
5
 
6
6
  # Migration evidence contract
@@ -12,22 +12,33 @@ AI assistant has no migration tools: it does not import, convert or verify sites
12
12
  Use this shared contract with WordPress, Astro, URL and multisite recipes.
13
13
  ## Choose the migration intent before writes
14
14
 
15
- Record `preserve` or `renew` in the workspace's `brief/migration.md` (or the
16
- project's equivalent brief), with scope, source URLs and the user's decision.
17
- These are planning labels, not fields accepted by the migration API. Ask when
18
- the intent is unclear; do not infer redesign permission from “migrate”.
15
+ Record two independent choices in `brief/migration.md` (or the project's
16
+ corresponding brief): `text_intent` and `design_intent`, each `preserve` or `renew`.
17
+ Design includes images. These are planning labels, not migration API parameters.
18
+ Use the starter's `workflows/interview.md` when guidance or decisions are missing;
19
+ resume existing answers. Do not infer either choice from a vague "migrate" or
20
+ "renew", or silently apply an old single-choice brief to both dimensions.
19
21
 
20
- | Intent | Source material | Acceptance reference |
22
+ | Text | Design/images | Acceptance |
21
23
  | --- | --- | --- |
22
- | Preserve: change publishing platform | Keep text, images, structure, visual identity and behavior as closely as practical. | The original site. Record deliberate deviations and their agreed benefit. |
23
- | Renew: improve design and content | Use source text, images, structure and graphic design as raw material. Agree what to retain, rewrite, combine or replace. | The agreed brief, content plan and approved prototypes, not visual similarity to the old site. |
24
+ | Preserve | Preserve | Compare wording and appearance separately with the source. |
25
+ | Preserve | Renew | Keep wording; compare appearance with approved new prototypes. |
26
+ | Renew | Preserve | Review copy against the editorial brief; keep source appearance, allowing documented layout adjustments for new text length. |
27
+ | Renew | Renew | Review copy and appearance against their separately approved briefs. |
24
28
 
25
- Both paths preserve facts, ownership, required business behavior and historical
26
- URL continuity. Renewal does not authorize invented claims, removal of useful
27
- content or an unapproved domain switch. Do not use a partly migrated target as
28
- an accidental design reference. Protect existing target edits in either path.
29
+ Preserved text includes headings, body copy, CTA labels and captions. Record
30
+ metadata, alt text, legal text and translation rules explicitly; SEO is not an
31
+ exception permitting silent rewrites. With renewed design, list required assets
32
+ and which images may be replaced or generated, including cropping, credits and
33
+ rights. Format/size optimization must not change a preserved image's motif.
29
34
 
30
- ## Use editable blocks in both paths
35
+ Record source URLs, dates, approved scope, per-Page exceptions and acceptance
36
+ references separately. Both choices preserve facts, ownership, required behavior
37
+ and historical URL continuity. Renewing design does not authorize text rewrites;
38
+ renewing text does not authorize new imagery. Neither authorizes invented claims,
39
+ unreviewed content removal or domain cutover. Protect existing target edits.
40
+
41
+ ## Use editable blocks for all four combinations
31
42
 
32
43
  1. Inspect standard block schemas, composition starters, named styles and Page
33
44
  templates. Prefer these when they fit.
@@ -60,10 +71,10 @@ still needs a platform fix, not a disguised HTML/CSS workaround.
60
71
 
61
72
  The managed WordPress importer deterministically stores cleaned HTML and shared
62
73
  references, without AI rewriting. That is a source-preserving intermediate step.
63
- The external agent rebuilds it into reviewed blocks/templates for either intent;
74
+ The external agent rebuilds it into reviewed blocks/templates for all four combinations;
64
75
  `set_page_mode` does not perform conversion. Keep the complete source, map every
65
- in-scope content element, and do not silently truncate long pages. In preserve
66
- mode retain wording; in renew mode track approved rewrites and source facts.
76
+ in-scope content element, and do not silently truncate long pages. When text_intent is preserve retain wording; when it is renew track approved
77
+ rewrites and source facts, independently of design_intent.
67
78
  An import finishing does not mean design, block reconstruction or launch is done.
68
79
 
69
80
  ## Old URLs must continue to work
@@ -86,10 +97,10 @@ Do not switch traffic until these checks pass and cutover is authorized.
86
97
 
87
98
  ## Gate 1: source baseline, before conversion
88
99
 
89
- Record the chosen intent, authoritative source URL/date, scope, relevant Core version, active
100
+ Record both chosen intents, authoritative source URL/date, scope, relevant Core version, active
90
101
  Page templates and overrides. Inventory home, category/archive, long/short
91
102
  articles, downloads, empty related lists and each distinct business surface.
92
- For preserve, capture source and target geometry; for renew, compare the target
103
+ For design_intent=preserve, capture source and target geometry; for design_intent=renew, compare the target
93
104
  with the approved design while retaining source coverage evidence. Capture
94
105
  screenshots and computed geometry at matching actual `innerWidth`
95
106
  values (320/390/768/1024/1280/1536 where relevant, plus both sides of actual
@@ -249,14 +260,15 @@ pre-cutover scope honestly when DNS or integrations remain out of scope.
249
260
 
250
261
  The initial route census must combine source sitemaps, internal links, archive
251
262
  pagination, CMS inventory and known utility routes. Include homepage, archives,
252
- 404/search behavior and routes outside the sitemap where present. In preserve mode, do not invent
253
- features absent from the source. In renew mode, include additions in the agreed brief. Assign every route a recipe, template override,
263
+ 404/search behavior and routes outside the sitemap where present. Do not invent features absent from the source; include additions only in the agreed brief. Assign every route a recipe, template override,
254
264
  composition or documented exception. Inventory the whole shell: content outside
255
265
  `main`, header, footer, service navigation and archive heroes are not optional.
256
266
 
257
- Derive required evidence from that census. For preserve, pair every in-scope source/target route
258
- at mobile and desktop; for renew, compare every target route to its approved
259
- prototype and account for the source content/URL mapping; add each unique component, breakpoint and interaction
267
+ Derive required evidence from that census. For design_intent=preserve, pair every
268
+ in-scope source/target route at mobile and desktop; for design_intent=renew, compare
269
+ every target route to its approved prototype. Independently compare preserved text
270
+ to the source and renewed text to its editorial brief; account for the source
271
+ content/URL mapping in every combination; add each unique component, breakpoint and interaction
260
272
  state. Inspect page-specific media, lists, tables, embeds, CTAs, anchors and related
261
273
  content. One representative article cannot attest every article's content.
262
274
 
@@ -0,0 +1,18 @@
1
+ # Interview progress
2
+
3
+ Status: not started
4
+ Next question: goal and scope
5
+
6
+ ## Confirmed answers
7
+
8
+ | Topic | Answer | Source/date | Brief location |
9
+ | --- | --- | --- | --- |
10
+
11
+ ## Proposals and unknowns
12
+
13
+ Record what is not yet decided, whether it blocks the next step and who can decide.
14
+
15
+ ## Recap and approved next step
16
+
17
+ Record the owner's confirmation, exact scope and date. Do not infer deployment,
18
+ DNS or message approval from a completed brief. No secrets or raw private transcripts.
@@ -0,0 +1,42 @@
1
+ # Migration brief (when applicable)
2
+
3
+ ## Independent choices
4
+
5
+ - text_intent: undecided (preserve or renew)
6
+ - design_intent: undecided (preserve or renew; includes images)
7
+
8
+ These are planning labels, not API parameters. Choose each separately. If guidance
9
+ is needed, use workflows/interview.md. A single "renew" must not silently authorize
10
+ both. Expand an older single-choice brief with the owner before dependent writes.
11
+
12
+ ## Source URLs, date and agreed scope
13
+
14
+ ## Text policy and exceptions
15
+
16
+ Preserve wording, headings, CTAs and captions when text_intent is preserve. Record
17
+ SEO metadata/alt text, legal copy, translation and page-specific exceptions explicitly.
18
+ For renewal, record the approved editorial brief and facts that must remain true.
19
+
20
+ ## Design and image policy and exceptions
21
+
22
+ Record layout/brand references, required logos/assets, permitted replacements or
23
+ generation, cropping, rights and credits. Design renewal alone never permits text
24
+ rewriting. Preserve image motifs unless a replacement is agreed; format/size
25
+ optimization does not mean changing the image's content.
26
+
27
+ ## Acceptance references
28
+
29
+ Text: original source for preserve; approved editorial brief for renew.
30
+ Design/images: original source for preserve; approved design/prototypes for renew.
31
+ Record these separately per layout or page when exceptions apply.
32
+
33
+ ## Standard blocks, custom types and HTML exceptions
34
+
35
+ ## Old URL to preserved path or relevant redirect
36
+
37
+ Both choices retain URL continuity, source facts and required business behavior.
38
+
39
+ ## Prototype and verification evidence
40
+
41
+ Record text, design/images, links and behavior results separately. Keep private
42
+ extracts in sources/private/ and screenshots in qa/reports/.
@@ -0,0 +1,72 @@
1
+ # Guided website interview
2
+
3
+ ## When to start or resume
4
+
5
+ Use this routine when the owner asks for guidance or a material decision is missing
6
+ from the brief. Read the existing briefs, decisions and brief/interview.md first.
7
+ Do not restart an interview or ask questions already answered. If the brief is
8
+ complete, summarize it and continue with the relevant routine. This is an agent
9
+ conversation, not a portal wizard or a new API workflow.
10
+
11
+ ## How to conduct it
12
+
13
+ - Use the owner's language. Ask one short question at a time; offer concrete
14
+ choices and allow a free answer or "not sure". Explain technical choices plainly.
15
+ - Reuse explicit instructions already given. Distinguish confirmed answers,
16
+ proposals and unknowns. Never treat silence as approval.
17
+ - If an answer is unknown, suggest an option with its consequences. Research and
18
+ reversible prototypes may continue; do not perform dependent CMS writes until
19
+ the necessary decision is confirmed.
20
+ - Save each answer and its source/date in brief/interview.md, and the approved
21
+ decision in the relevant brief. Keep the next question and unresolved items so
22
+ another session can resume. Do not store credentials, personal contact lists
23
+ or raw private transcripts here. No MCP connection is needed to plan locally.
24
+ - Reopen only affected questions when the owner changes direction. Record the
25
+ change in decisions.md; do not silently replace confirmed rules.
26
+
27
+ ## Interview stages
28
+
29
+ 1. **Goal and scope** — New website or migration? Purpose, audience, language,
30
+ desired visitor actions, source URL and what is in/out of scope.
31
+ Save to brief/site.md and brief/migration.md when relevant.
32
+ 2. **Target and access** — Existing or new Typeroll Site? Discover accessible
33
+ Organizations/Sites through MCP and confirm the exact target and Version before
34
+ writes. Explain any missing storage or access when it becomes relevant; never
35
+ ask for a secret in chat. Save non-secret IDs to typeroll.json only when known.
36
+ 3. **Text decision (migration)** — Preserve existing wording or renew it?
37
+ Preserve covers headings, body copy, CTA labels, captions and other authored
38
+ text. Record SEO titles/descriptions, alt text, legal text, translation and any
39
+ page-specific exceptions explicitly. Renewal needs an agreed editorial brief;
40
+ it is not permission to invent facts. Save text_intent in brief/migration.md.
41
+ 4. **Design and image decision (migration)** — Independently preserve or renew
42
+ layout, typography, colors and imagery? Offer all four text/design combinations.
43
+ For renewal, ask which existing assets must remain and which may be replaced
44
+ or generated. Clarify cropping, logos, credits and image rights. Optimization
45
+ alone must not change the motif. Save design_intent and asset exceptions in
46
+ brief/migration.md, and the direction in brief/brand.md. A fresh design never
47
+ grants permission to rewrite preserved text.
48
+ 5. **Content and behavior** — Page types, shared templates, navigation, forms,
49
+ downloads, integrations and who will edit them. Identify missing capabilities
50
+ before scaling up. Save to brief/content-model.md. New websites skip migration
51
+ preservation choices and establish their brand/content brief here.
52
+ 6. **SEO and continuity** — Markets, search intent, useful topics and existing
53
+ valuable URLs. Record evidence separately from hypotheses in brief/seo.md.
54
+ Confirm metadata policy; text preservation cannot be bypassed as "SEO cleanup".
55
+ Every old public URL must remain or redirect meaningfully regardless of the
56
+ two migration choices. Retiring a URL requires a separate agreed exception.
57
+ 7. **Owner rules and review** — Non-negotiable copy/design constraints, editing
58
+ roles and who approves prototypes, publication, DNS or messages. Save confirmed
59
+ rules to brief/rules.md. Keep technical access separate from user authorization.
60
+ 8. **Recap and next action** — Show the scope, both migration decisions (if any),
61
+ image exceptions, acceptance references, open questions and the next concrete
62
+ step. Ask the owner to correct/confirm the brief before dependent writes.
63
+ Reuse existing approval if it already covers that exact step. Brief approval
64
+ alone does not authorize publication, domain cutover or mail.
65
+
66
+ ## Completion
67
+
68
+ Mark the interview ready for the agreed next step only when its blocking questions
69
+ are answered; list deferred decisions explicitly. Continue with workflows/new-site.md
70
+ or workflows/migration.md and load only the relevant MCP recipe. Confirm one
71
+ prototype per distinct layout before bulk work. Review preserved dimensions
72
+ against the source and renewed dimensions against the approved brief separately.
@@ -0,0 +1,35 @@
1
+ # Migration kickoff
2
+
3
+ If guidance is needed, start or resume workflows/interview.md. Otherwise fill in
4
+ this prompt from the confirmed brief. The two preservation choices are independent.
5
+
6
+ ```text
7
+ Migrate [source URL] to Typeroll, Organization [ID/name], Site [ID/name], Version [ID].
8
+ Text: [preserve existing wording / renew against an agreed editorial brief].
9
+ Design and images: [preserve / renew against an agreed design brief].
10
+ Read AGENTS.md and use workflows/interview.md for missing decisions.
11
+ Read tr-migration-evidence, then tr-migrate-wp (or the appropriate source recipe).
12
+ Confirm the target and import readiness before writes. Inventory URLs, content,
13
+ media, templates and integrations; record both choices and exceptions in brief/migration.md.
14
+ Build and verify one prototype per distinct layout before bulk reconstruction.
15
+ Use standard blocks first, editable custom types next, isolated HTML only for
16
+ justified exceptions. Rebuild imported HTML with block tools; a mode switch does not convert it.
17
+ Keep preserved text unchanged even when the design is new. Record which images
18
+ may change. Preserve every old public URL or redirect to a relevant destination.
19
+ Protect existing CMS edits. Review text and design/images against their own
20
+ acceptance references, plus mobile/desktop behavior, downloads, forms and URL coverage.
21
+ Report unverified items separately. Do not publish, switch DNS or send messages
22
+ without explicit approval.
23
+ ```
24
+
25
+ The managed importer stages cleaned HTML, media and shared references in Review.
26
+ The external agent can then reconstruct those Pages; no manual editor conversion
27
+ is required. An agent can also build block Pages directly from source material.
28
+ Neither path includes an automatic HTML-to-blocks converter. Read and preserve the
29
+ full source before switching modes, then save/read back and preview the rebuilt
30
+ Page on the selected Version. Never publish an empty intermediate block Page.
31
+
32
+ Track import, block reconstruction, separate text/design review, candidate
33
+ publication and domain cutover as separate milestones. Import completion is not
34
+ launch approval. All four text/design combinations use the same block hierarchy
35
+ and URL continuity contract. Planning choices are not migration API fields.
@@ -0,0 +1,17 @@
1
+ # New website kickoff
2
+
3
+ Use this prompt only when the brief is already clear. Otherwise start or resume
4
+ workflows/interview.md; the owner does not need to fill in every document alone.
5
+
6
+ ```text
7
+ Create [website] for [audience and purpose] in Typeroll Organization [ID/name].
8
+ Read AGENTS.md, confirm the Site and Version, and use workflows/interview.md for
9
+ missing decisions. Record confirmed goals, brand, content model, owner rules and
10
+ SEO strategy in brief/. Read tr-new-site and relevant tool schemas on demand.
11
+ Build representative desktop/mobile layouts with editable blocks and shared templates.
12
+ Share previews, record accepted decisions and keep unresolved items explicit.
13
+ Do not publish, change DNS or send messages without explicit approval.
14
+ ```
15
+
16
+ The CMS owns current content and settings. The repository owns the brief, rules,
17
+ decisions and evidence. Load recipes when needed, not the whole manual.