@typeroll/mcp-server 0.45.19 → 0.45.21
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/AGENTS.md +42 -0
- package/dist/bundled-content.js +7 -6
- package/dist/server.js +2 -0
- package/dist/tools/extensions.js +13 -0
- package/dist/tools/forms.js +3 -2
- package/dist/tools/owner-review.js +59 -0
- package/dist/tools/pages.js +7 -2
- package/dist/tools/settings.js +3 -0
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/skills/README.md +4 -3
- package/skills/tr-import-url.md +19 -10
- package/skills/tr-migrate-astro.md +6 -0
- package/skills/tr-migrate-multisite.md +31 -95
- package/skills/tr-migrate-wp.md +19 -19
- package/skills/tr-migration-evidence.md +107 -0
- package/skills/tr-page-template.md +33 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tr-migration-evidence
|
|
3
|
+
description: Source-first design baseline, native capability mapping and evidence gates required before bulk website migration or visual acceptance.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Migration evidence contract
|
|
7
|
+
|
|
8
|
+
Use this shared contract with WordPress, Astro, URL and multisite recipes.
|
|
9
|
+
Default to preserving the source appearance and behavior. A redesign requires
|
|
10
|
+
explicit scope. A partly migrated target is not the design reference.
|
|
11
|
+
|
|
12
|
+
## Gate 1: source baseline, before conversion
|
|
13
|
+
|
|
14
|
+
Record the authoritative source URL/date, scope, relevant Core version, active
|
|
15
|
+
Page templates and overrides. Inventory home, category/archive, long/short
|
|
16
|
+
articles, downloads, empty related lists and each distinct business surface.
|
|
17
|
+
Capture screenshots and computed geometry at matching actual `innerWidth`
|
|
18
|
+
values (320/390/768/1024/1280/1536 where relevant, plus both sides of actual
|
|
19
|
+
breakpoints). Record loaded font families/weights, color panels, logo/header,
|
|
20
|
+
hero, gutters, article/sidebar widths, card anatomy/grid and footer. Inspect
|
|
21
|
+
loaded images, menus, scrolled TOC, anchor landings and long links.
|
|
22
|
+
Inventory semantic CTA anchors/buttons, downloads and affiliate links before
|
|
23
|
+
copying prose: retain decoded labels, href paths, query parameters, fragments,
|
|
24
|
+
`target` and meaningful `rel` tokens. A source CSS class may identify a CTA
|
|
25
|
+
whose appearance would disappear when copied into prose.
|
|
26
|
+
|
|
27
|
+
Before removing builder wrappers/classes, preserve the information they carry:
|
|
28
|
+
anchors, lazy/srcset/background images, captions, tables, ordering, downloads,
|
|
29
|
+
embeds and interactions. Content modernization is a separate decision.
|
|
30
|
+
|
|
31
|
+
## Gate 2: one verified prototype per active recipe, before bulk writes
|
|
32
|
+
|
|
33
|
+
Call `list_block_types` and `read_block_type` on the deployed runtime. Map each
|
|
34
|
+
source component to exact fields/bindings, defaults, minimum version and expected
|
|
35
|
+
geometry. A registry entry does not prove the capability works. Save and read
|
|
36
|
+
back each prototype, then inspect its preview and an authorized static build.
|
|
37
|
+
|
|
38
|
+
Example: a 48px heading uses `core/heading.font_size_px: 48` on Core 0.2.25+;
|
|
39
|
+
read the saved block back and measure computed `fontSize` at 1280px. Writing
|
|
40
|
+
`font_size_px` to `core/prose`, which does not declare it, is an unsupported
|
|
41
|
+
mapping even if an API preserves that unknown key. Stop with
|
|
42
|
+
`waiting_for_native_support` when required capability is absent or ignored;
|
|
43
|
+
do not hide the gap with tenant CSS or generic custom blocks.
|
|
44
|
+
|
|
45
|
+
Validate shared Page references, item order, missing images and empty/unpublished
|
|
46
|
+
references. Keep semantics separate from presentation: category emoji belongs
|
|
47
|
+
to its shared Page field, not copied into every article or card excerpt.
|
|
48
|
+
Validate actual field types, not just key names: number fields use JSON numbers
|
|
49
|
+
(`16`, `1.6`, `1`), not strings (`"16"`, `"1.6"`, `"1"`); booleans use `true`/
|
|
50
|
+
`false`. Check responsive map values too. Read-back retention is not enough:
|
|
51
|
+
measure the resulting font size, line height and paragraph spacing. If an
|
|
52
|
+
incorrect type is accepted but ignored, fix the prototype before bulk writes.
|
|
53
|
+
|
|
54
|
+
Map standalone CTAs to `core/button` when its declared fields preserve the
|
|
55
|
+
source behavior, rather than leaving class-dependent anchors in prose.
|
|
56
|
+
Core 0.2.25+ `new_tab: true` emits `target="_blank"` and
|
|
57
|
+
`rel="noopener noreferrer"` in static HTML; false/unset keeps the same tab.
|
|
58
|
+
Verify the rendered target/rel, preserved affiliate queries/fragments, keyboard
|
|
59
|
+
activation, actual tab opening and narrow-screen wrapping without requiring
|
|
60
|
+
JavaScript. Do not silently discard source `sponsored`/`nofollow`, download
|
|
61
|
+
behavior or other semantics unsupported by the chosen block: record the gap
|
|
62
|
+
and use a supported composition or stop for native support.
|
|
63
|
+
Do not apply a template to hundreds of Pages until its prototype passes.
|
|
64
|
+
|
|
65
|
+
## Separate files, addresses and business behavior
|
|
66
|
+
|
|
67
|
+
Inventory both file bytes and every discovered historical asset URL, including
|
|
68
|
+
PDF/download hrefs, image click targets, srcsets and backgrounds. Verify transfer
|
|
69
|
+
and rendering separately from old-address preservation. Deduplicate by content
|
|
70
|
+
identity, not similar filenames. Preflight expanded redirect artifact bytes and
|
|
71
|
+
provider rule limits. A 200 at an unrelated destination is a failure. A source
|
|
72
|
+
404 is not permission to discard a URL with traffic/backlinks: record a decision.
|
|
73
|
+
Query URLs need explicit routing support at the future host; keeping the old
|
|
74
|
+
server does not preserve them when the same hostname moves.
|
|
75
|
+
|
|
76
|
+
Classify each CTA: contact form, owned lead workflow, affiliate link, partner
|
|
77
|
+
iframe/script or other runtime. Preserve market, language, destinations and
|
|
78
|
+
attribution. Never clone recipients or partner IDs across markets. Test loading,
|
|
79
|
+
interaction and conversion separately; only use an authorized synthetic mode and
|
|
80
|
+
safe recipient. Unavailable delivery remains UNVERIFIED. No real leads or mail
|
|
81
|
+
to third parties merely to fill a checklist.
|
|
82
|
+
|
|
83
|
+
## Evidence record (repeat per recipe, viewport and state)
|
|
84
|
+
|
|
85
|
+
- Source URL/date and target URL; Page/template IDs; exact publication ID.
|
|
86
|
+
- Runtime/Core version and saved content/config revision.
|
|
87
|
+
- Actual viewport `innerWidth` and height; scroll/menu/anchor state.
|
|
88
|
+
- Source and target screenshot paths; measured expected and actual geometry.
|
|
89
|
+
- Capability mapping: block type, field, read-back value and computed result.
|
|
90
|
+
- Separate PASS / FAIL / UNVERIFIED for routing, content, visual, assets,
|
|
91
|
+
keyboard/interaction and delivery; reviewer and timestamp.
|
|
92
|
+
- Visible deviation, specific user benefit, accepted scope and rationale.
|
|
93
|
+
|
|
94
|
+
Filled examples:
|
|
95
|
+
|
|
96
|
+
| Observation | Technical result | Visual decision |
|
|
97
|
+
| --- | --- | --- |
|
|
98
|
+
| Source video overflows a 390px viewport; native video fits and shows the entire frame | Width 390px, original aspect preserved; captures reviewed | PASS: deliberate improvement in mobile usability |
|
|
99
|
+
| Source has four cards and turquoise hero at 1280px; target has three plain cards and no color panel | HTTP 200, no overflow, all content is blocks | FAIL: brand/layout lost; those technical facts cannot attest visual fidelity |
|
|
100
|
+
| Heading round-trip retains 48 but computed size stays 32 | Save succeeds | FAIL: find ignored field/cascade before bulk conversion |
|
|
101
|
+
|
|
102
|
+
Keep imported, saved, locally checked, hosted-preview checked, published and
|
|
103
|
+
traffic-cut-over distinct. Template/theme changes invalidate affected acceptance;
|
|
104
|
+
never attach old evidence to a new publication. `record_migration_seo_acceptance`
|
|
105
|
+
booleans are reviewer attestations, not automated visual proof. Do not set them
|
|
106
|
+
from HTTP status, native-block count or overflow alone. Report a completed
|
|
107
|
+
pre-cutover scope honestly when DNS or integrations remain out of scope.
|
|
@@ -81,3 +81,36 @@ headings render as H2 without mutating storage. A Page without a template H1 can
|
|
|
81
81
|
keep one body H1. The layout itself does not inject an additional title.
|
|
82
82
|
`core/field_list` defaults to a 0.7rem row gap, weight-600 labels and values that
|
|
83
83
|
wrap long URLs. Empty rows and entirely empty groups stay hidden.
|
|
84
|
+
|
|
85
|
+
### Native precision (Core 0.2.25 candidate)
|
|
86
|
+
|
|
87
|
+
Read current block schemas before relying on new controls. Heading/Page title
|
|
88
|
+
support responsive `font_size_px`, unitless `line_height` and `color`. Sections
|
|
89
|
+
separate full-width background from `max_width_px`, `padding_x` and
|
|
90
|
+
`content_gap_px`; Containers add `max_width_px`, `gap_px`, `padding_x_px` and
|
|
91
|
+
`padding_y_px`. Two columns add `gap_px` and `right_width_px`. Use numeric values
|
|
92
|
+
or `{mobile, tablet, laptop, desktop, wide}` overrides, not CSS strings.
|
|
93
|
+
Breadcrumbs have `padding_before_px`, `padding_after_px`, `divider`; TOC has
|
|
94
|
+
`padding_px`, `radius_px`, `border`, `shadow`, `link_color: neutral` and
|
|
95
|
+
`list_style: chevron`. Keep TOC generated from headings. Icon box adds native
|
|
96
|
+
card dimensions and `whole_card_link`; map real Page URLs rather than freezing
|
|
97
|
+
customer routes in HTML. Site logo accepts `height_px`. The `system` font family
|
|
98
|
+
uses the device stack without a webfont request. Preserve complete images and
|
|
99
|
+
validate actual mobile/desktop output, including scrolled outlines.
|
|
100
|
+
|
|
101
|
+
Columns `stack_below` accepts the select strings `"721"` (default), `"768"`,
|
|
102
|
+
`"1024"`, `"1280"`. A direct-slot TOC follows the selected stacked boundary: its
|
|
103
|
+
`mobile_display: "hidden"` releases the otherwise empty slot; `"visible"` keeps
|
|
104
|
+
it in flow. Use `"1024"` for full article width below laptop when justified by
|
|
105
|
+
the source comparison. Do not merely hide the TOC with `hidden_on` while leaving
|
|
106
|
+
a reserved two-column track, or duplicate body content for tablet/desktop.
|
|
107
|
+
|
|
108
|
+
For a sticky site header, use an outer semantic Container (`tag: "header"`,
|
|
109
|
+
`sticky: true`, optional responsive `sticky_top_px`, 0–240) outside main. Keep
|
|
110
|
+
its background opaque and its containing block tall enough; do not create a
|
|
111
|
+
short header wrapper or clip it with ancestor overflow. Sticky is opt-in.
|
|
112
|
+
Container `padding_top_px`/`padding_bottom_px` override `padding_y_px` per side
|
|
113
|
+
and accept responsive maps. Grid/Repeater and repeater aliases expose responsive
|
|
114
|
+
`gap_px` (0–240). Use these fields for exact source spacing rather than empty
|
|
115
|
+
spacers or corrective CSS. TOC active-section feedback includes document scroll
|
|
116
|
+
padding; remove obsolete duplicated tenant header offsets during migration.
|