@typeroll/mcp-server 0.45.20 → 0.45.22
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 +67 -0
- package/dist/bundled-content.js +7 -6
- package/dist/server.js +4 -1
- package/dist/tools/extensions.js +27 -0
- package/dist/tools/forms.js +3 -2
- package/dist/tools/owner-review.js +59 -0
- package/dist/tools/pages.js +7 -3
- 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 +160 -0
- package/skills/tr-page-template.md +33 -0
|
@@ -0,0 +1,160 @@
|
|
|
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.
|
|
108
|
+
|
|
109
|
+
## Complete census and visual signoff
|
|
110
|
+
|
|
111
|
+
The initial route census must combine source sitemaps, internal links, archive
|
|
112
|
+
pagination, CMS inventory and known utility routes. Include homepage, archives,
|
|
113
|
+
404/search behavior and routes outside the sitemap where present. Do not invent
|
|
114
|
+
features absent from the source. Assign every route a recipe, template override,
|
|
115
|
+
composition or documented exception. Inventory the whole shell: content outside
|
|
116
|
+
`main`, header, footer, service navigation and archive heroes are not optional.
|
|
117
|
+
|
|
118
|
+
Derive required evidence from that census. Pair every in-scope source/target route
|
|
119
|
+
at mobile and desktop; add each unique component, breakpoint and interaction
|
|
120
|
+
state. Inspect page-specific media, lists, tables, embeds, CTAs, anchors and related
|
|
121
|
+
content. One representative article cannot attest every article's content.
|
|
122
|
+
|
|
123
|
+
A coverage row records route, recipe, component, state, actual viewport dimensions,
|
|
124
|
+
source revision, target content/config/Core/publication revision, paired screenshot
|
|
125
|
+
references, reviewer, review time and result. All rows start `UNVERIFIED`.
|
|
126
|
+
Keep independent results for content, links, list cardinality, full membership,
|
|
127
|
+
sequence, appearance, keyboard behavior and delivery. Screenshots must be inspected;
|
|
128
|
+
image diffs and contact sheets assist review and do not prove aesthetics.
|
|
129
|
+
|
|
130
|
+
For menus capture source and target closed, open and scrolled states, nested groups
|
|
131
|
+
if present, short landscape, focus order, Escape, link activation and breakpoint
|
|
132
|
+
transitions. For TOCs capture top/middle/bottom and anchor landings. Include tabs,
|
|
133
|
+
accordions and empty/loading/error/success states where applicable. Separate mobile
|
|
134
|
+
and desktop menu compositions require separate evidence; shared links may be reused
|
|
135
|
+
but one variant's screenshots do not attest the other.
|
|
136
|
+
|
|
137
|
+
Report denominators separately: routes/content, paired visual pages, recipes,
|
|
138
|
+
components and states. Missing an archive, open menu, footer or a unique embed leaves
|
|
139
|
+
coverage incomplete even if all captured screenshots pass. Shared block, theme,
|
|
140
|
+
partial or template changes invalidate every dependent row; content changes
|
|
141
|
+
invalidate that route and dependent listings. An old revision cannot approve a new
|
|
142
|
+
one. Source availability failures remain `UNVERIFIED`, not silently excluded.
|
|
143
|
+
|
|
144
|
+
Visual signoff requires zero uncovered required surfaces and zero unexplained
|
|
145
|
+
regressions. `FAIL` or `UNVERIFIED` blocks that signoff, even when a separately scoped
|
|
146
|
+
technical publication has approval. An intentional deviation needs exact before/
|
|
147
|
+
after evidence, specific user benefit and accepted scope; “cleaner” is not a reason.
|
|
148
|
+
|
|
149
|
+
Examples from a moving-services migration:
|
|
150
|
+
|
|
151
|
+
| Surface | Passing evidence | Separate visual result |
|
|
152
|
+
| --- | --- | --- |
|
|
153
|
+
| Mobile menu | Keyboard focus and Escape work | FAIL: header moves, source service group is missing, open-menu composition differs |
|
|
154
|
+
| Category archive | Every destination URL exists | FAIL: source sequence, card anatomy and columns differ |
|
|
155
|
+
| Article body | All text imported | UNVERIFIED: unique embed and footer were never compared |
|
|
156
|
+
|
|
157
|
+
Do not report “all design checked” from a viewport or recipe sample. Keep source
|
|
158
|
+
link-order comparisons and paired contact sheets with the report. The same contract
|
|
159
|
+
applies to WordPress, URL, Astro and multisite migration; do not create separate,
|
|
160
|
+
weaker checklists for individual import mechanisms.
|
|
@@ -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.
|