@rubytech/create-sitedesk-code 0.1.402 → 0.1.405
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/__tests__/launchd-plist.test.js +13 -1
- package/dist/__tests__/neo4j-darwin-dedicated.test.js +52 -0
- package/dist/__tests__/neo4j-datadir.test.js +8 -7
- package/dist/__tests__/neo4j-teardown.test.js +17 -1
- package/dist/index.js +183 -9
- package/dist/launchd-plist.js +21 -0
- package/dist/neo4j-darwin-dedicated.js +39 -0
- package/dist/neo4j-datadir.js +9 -5
- package/dist/neo4j-teardown.js +15 -0
- package/dist/uninstall.js +34 -8
- package/package.json +1 -1
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +2 -2
- package/payload/platform/plugins/web-designer/skills/web-design/references/placeholders.md +19 -2
- package/payload/platform/plugins/web-designer/skills/web-design/templates/index.html +12 -12
- package/payload/platform/scripts/check-no-esm-require.mjs +3 -0
- package/payload/premium-plugins/sitedesk/BUNDLE.md +6 -4
- package/payload/premium-plugins/sitedesk/PLUGIN.md +2 -2
- package/payload/premium-plugins/sitedesk/agents/sitedesk--media-producer.md +18 -7
- package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/.claude-plugin/plugin.json +1 -1
- package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/PLUGIN.md +30 -26
- package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/README.md +26 -36
- package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/commands/make-media.md +2 -2
- package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/microsite/SKILL.md +52 -75
- package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/socials/SKILL.md +52 -120
- package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/socials/references/sources.md +17 -52
- package/payload/server/public/assets/{AdminLoginScreens-rlk263u9.js → AdminLoginScreens-D36zz_SY.js} +1 -1
- package/payload/server/public/assets/AdminShell-DH6Lcj-d.js +1 -0
- package/payload/server/public/assets/{Checkbox-Chz6bfy-.js → Checkbox-54KtArF3.js} +1 -1
- package/payload/server/public/assets/{Transcript-Bsx-bGgY.js → Transcript-BCpiXt4J.js} +1 -1
- package/payload/server/public/assets/{admin-BnZH758N.js → admin-C0FCHcJj.js} +1 -1
- package/payload/server/public/assets/{browser-CIrfyZWe.js → browser-bKeZ5iLx.js} +1 -1
- package/payload/server/public/assets/{calendar-D6Z8Kmrn.js → calendar-BDPBArFA.js} +1 -1
- package/payload/server/public/assets/chat-Cp_1ebzU.js +1 -0
- package/payload/server/public/assets/chevron-left-S7Nk-se6.js +1 -0
- package/payload/server/public/assets/data-BshlTgIW.js +1 -0
- package/payload/server/public/assets/{graph-XZJZHzvv.js → graph-Dvru9CW9.js} +1 -1
- package/payload/server/public/assets/{graph-labels-Cabqmf35.js → graph-labels-DLhR6Rit.js} +1 -1
- package/payload/server/public/assets/{maximize-2-DPe-Noig.js → maximize-2-CyPKq7HZ.js} +1 -1
- package/payload/server/public/assets/{operator-BM_CDyCb.js → operator-Ql5iQXB-.js} +1 -1
- package/payload/server/public/assets/page-ClJOW2fk.js +32 -0
- package/payload/server/public/assets/{page-E7I5sEVt.js → page-YsTtZsn6.js} +1 -1
- package/payload/server/public/assets/{public-CrdWCSk2.js → public-BlDxwcmS.js} +1 -1
- package/payload/server/public/assets/{rotate-ccw-Dwtj0NJ7.js → rotate-ccw-DSynJPZX.js} +1 -1
- package/payload/server/public/assets/useSubAccountSwitcher-CJelLQK-.css +1 -0
- package/payload/server/public/browser.html +4 -4
- package/payload/server/public/calendar.html +5 -5
- package/payload/server/public/chat.html +9 -9
- package/payload/server/public/data.html +8 -8
- package/payload/server/public/graph.html +9 -9
- package/payload/server/public/index.html +11 -11
- package/payload/server/public/operator.html +11 -11
- package/payload/server/public/public.html +9 -9
- package/payload/server/server.js +34 -32
- package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/brand-extract/SKILL.md +0 -86
- package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/make-media/SKILL.md +0 -75
- package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/make-media/references/intake-and-questions.md +0 -74
- package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/microsite/references/placeholders.md +0 -96
- package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/microsite/references/sections.md +0 -48
- package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/microsite/templates/index.html +0 -1004
- package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/microsite/templates/llms.txt +0 -32
- package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/socials/references/pii-strip.md +0 -64
- package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/socials/templates/og.html +0 -92
- package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/socials/templates/social-posts.md +0 -47
- package/payload/premium-plugins/sitedesk/plugins/sitedesk-media/skills/socials/templates/socials.html +0 -87
- package/payload/server/public/assets/AdminShell-C5vWTy2n.js +0 -1
- package/payload/server/public/assets/chat-h7SytZHx.js +0 -1
- package/payload/server/public/assets/chevron-left-DSTeS1_g.js +0 -1
- package/payload/server/public/assets/data-CL7CyX1C.js +0 -1
- package/payload/server/public/assets/page-CMIbXzSg.js +0 -32
- package/payload/server/public/assets/useSubAccountSwitcher-BH-YjP0H.css +0 -1
- /package/payload/server/public/assets/{useSubAccountSwitcher-BVCMAnWK.js → useSubAccountSwitcher-DGKQxXDD.js} +0 -0
|
@@ -635,9 +635,9 @@
|
|
|
635
635
|
<span></span><span></span><span></span>
|
|
636
636
|
</button>
|
|
637
637
|
<div class="left">
|
|
638
|
-
<a href="#story">
|
|
639
|
-
<a href="#
|
|
640
|
-
<a href="#
|
|
638
|
+
<a href="#story">{{ NAV_STORY_LABEL }}</a>
|
|
639
|
+
<a href="#{{ OFFER_SECTION_ID }}">{{ NAV_OFFER_LABEL }}</a>
|
|
640
|
+
<a href="#{{ HOW_SECTION_ID }}">{{ NAV_HOW_LABEL }}</a>
|
|
641
641
|
<a href="#founder">{{ FOUNDER_SECTION_LABEL }}</a>
|
|
642
642
|
</div>
|
|
643
643
|
<div class="center">
|
|
@@ -654,9 +654,9 @@
|
|
|
654
654
|
<div class="drawer" id="drawer" aria-hidden="true">
|
|
655
655
|
<button class="drawer-close" aria-label="Close menu">×</button>
|
|
656
656
|
<nav class="drawer-nav">
|
|
657
|
-
<a href="#story">
|
|
658
|
-
<a href="#
|
|
659
|
-
<a href="#
|
|
657
|
+
<a href="#story">{{ NAV_STORY_LABEL }}</a>
|
|
658
|
+
<a href="#{{ OFFER_SECTION_ID }}">{{ NAV_OFFER_LABEL }}</a>
|
|
659
|
+
<a href="#{{ HOW_SECTION_ID }}">{{ NAV_HOW_LABEL }}</a>
|
|
660
660
|
<a href="#founder">{{ FOUNDER_SECTION_LABEL }}</a>
|
|
661
661
|
<a href="#words">Reviews</a>
|
|
662
662
|
<a href="#services">Services</a>
|
|
@@ -679,7 +679,7 @@
|
|
|
679
679
|
<span class="price">{{ SECTOR_LABEL }} · Est. {{ ESTABLISHED_YEAR }}</span>
|
|
680
680
|
</div>
|
|
681
681
|
<div class="right">
|
|
682
|
-
<a href="#
|
|
682
|
+
<a href="#{{ HOW_SECTION_ID }}">{{ NAV_HOW_LABEL }}</a>
|
|
683
683
|
<a href="#services">Services</a>
|
|
684
684
|
<a href="#words">Reviews</a>
|
|
685
685
|
<a href="mailto:{{ EMAIL }}?subject=Project%20enquiry" class="cta">Get in touch</a>
|
|
@@ -713,7 +713,7 @@
|
|
|
713
713
|
<span>{{ HERO_SPEC_4 }}</span>
|
|
714
714
|
</div>
|
|
715
715
|
<div class="links">
|
|
716
|
-
<a href="#
|
|
716
|
+
<a href="#{{ OFFER_SECTION_ID }}">Our work</a>
|
|
717
717
|
<a href="#words">Reviews</a>
|
|
718
718
|
<a href="#services">Services</a>
|
|
719
719
|
</div>
|
|
@@ -741,8 +741,8 @@
|
|
|
741
741
|
</div>
|
|
742
742
|
|
|
743
743
|
<!-- WHAT WE DO -->
|
|
744
|
-
<article class="body-block" id="
|
|
745
|
-
<div class="section-eyebrow">
|
|
744
|
+
<article class="body-block" id="{{ OFFER_SECTION_ID }}">
|
|
745
|
+
<div class="section-eyebrow">{{ OFFER_EYEBROW }}</div>
|
|
746
746
|
<h2>{{ BUILD_HEADLINE }}</h2>
|
|
747
747
|
<p>{{ BUILD_PARA_1 }}</p>
|
|
748
748
|
<p>{{ BUILD_PARA_2 }}</p>
|
|
@@ -758,8 +758,8 @@
|
|
|
758
758
|
</div>
|
|
759
759
|
|
|
760
760
|
<!-- HOW WE WORK -->
|
|
761
|
-
<article class="body-block" id="
|
|
762
|
-
<div class="section-eyebrow">
|
|
761
|
+
<article class="body-block" id="{{ HOW_SECTION_ID }}">
|
|
762
|
+
<div class="section-eyebrow">{{ HOW_EYEBROW }}</div>
|
|
763
763
|
<h2>{{ CRAFT_HEADLINE }}</h2>
|
|
764
764
|
<p>{{ CRAFT_PARA_1 }}</p>
|
|
765
765
|
<p>{{ CRAFT_PARA_2 }}</p>
|
|
@@ -50,6 +50,9 @@ const ALLOWLIST = new Set([
|
|
|
50
50
|
// Same vi.hoisted pattern: Task 576's claude-auth refresh-lock test
|
|
51
51
|
// builds a tmpdir + creds path before the module's `../paths` mock fires.
|
|
52
52
|
'platform/ui/app/lib/__tests__/claude-auth-refresh-lock.test.ts',
|
|
53
|
+
// Same vi.hoisted pattern: Task 1410's claude-auth atomic-write test
|
|
54
|
+
// builds a tmpdir + creds path before the module's `../paths` mock fires.
|
|
55
|
+
'platform/ui/app/lib/__tests__/claude-auth-atomic-write.test.ts',
|
|
53
56
|
// Task 666: the module under test is a pure .cjs preload
|
|
54
57
|
// (server-init-line-stamper.cjs); the test loads it via the sanctioned
|
|
55
58
|
// createRequire(import.meta.url) ESM→CJS bridge, not a raw require.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: sitedesk
|
|
3
|
-
description: "SiteDesk premium bundle for independent service businesses. Two sub-plugins: sitedesk-media turns an operator's photos, website, social links and notes into a marketing micro-site plus share-ready social tiles; sitedesk-job captures the operator's own pricing/quotation method and applies it to produce the live quote, and issues recurring interim valuations (progress claims) from carried job state with a deterministic roll-up, and rolls up field workers' daily check-ins into per-worker timesheets and CIS invoices. Brand-agnostic — no client content ships in the templates or the pricing/job tree.
|
|
3
|
+
description: "SiteDesk premium bundle for independent service businesses. Two sub-plugins: sitedesk-media turns an operator's photos, website, social links and notes into a marketing micro-site plus share-ready social tiles; sitedesk-job captures the operator's own pricing/quotation method and applies it to produce the live quote, and issues recurring interim valuations (progress claims) from carried job state with a deterministic roll-up, and rolls up field workers' daily check-ins into per-worker timesheets and CIS invoices. Brand-agnostic — no client content ships in the templates or the pricing/job tree. 5 skills, 0 MCP tools."
|
|
4
4
|
plugins:
|
|
5
5
|
- sitedesk-media
|
|
6
6
|
- sitedesk-job
|
|
@@ -27,12 +27,14 @@ as `plugin:sitedesk:<name>` — so it contributes four `installedPremiumSpeciali
|
|
|
27
27
|
entries on any brand that ships `sitedesk`. Each owns one deliverable and the
|
|
28
28
|
skill(s) that produce it: `quoter` owns `quotation`, `valuer` owns `valuation`,
|
|
29
29
|
`payroll-clerk` owns `timesheet` (the three `sitedesk-job` skills), and
|
|
30
|
-
`media-producer` owns the
|
|
31
|
-
the
|
|
30
|
+
`media-producer` owns the two `sitedesk-media` skills — the construction `microsite`
|
|
31
|
+
wrapper and the `job`/`valuation` `socials` adapter — over the shared `web-designer`
|
|
32
|
+
builder. The admin agent dispatches the one whose deliverable matches the brief via
|
|
33
|
+
`subagent_type`.
|
|
32
34
|
|
|
33
35
|
## Sub-Plugins
|
|
34
36
|
|
|
35
37
|
| Sub-Plugin | Skills | MCP Tools | Focus |
|
|
36
38
|
|---|---|---|---|
|
|
37
|
-
| `sitedesk-media` |
|
|
39
|
+
| `sitedesk-media` | 2 | — | Marketing collateral over the shared `web-designer` builder — a construction `microsite` wrapper (web-designer's site with construction framing as input) and a `socials` job/valuation adapter (renders job progress through web-designer's tile core under the money boundary). Generic brand-extract, build, and rendering are web-designer's. |
|
|
38
40
|
| `sitedesk-job` | 3 | — | Job-centric workflows — `quotation` captures the operator's own pricing method (items, quantity rules, pricing rules, roll-up, documents) and applies it to produce the live quote; `valuation` sets up a job and issues its recurring interim valuations (progress claims) from carried state and a per-cycle delta, with a deterministic roll-up that reconciles to the penny; `timesheet` rolls up field workers' daily check-ins into per-worker timesheets and CIS invoices for a period, reconciled to the penny. No business content ships; everything is the operator's data. |
|
|
@@ -11,8 +11,8 @@ they appear in the native Claude Code subagent registry as
|
|
|
11
11
|
`plugin:sitedesk:<name>`. Each owns one deliverable and the skill(s) that
|
|
12
12
|
produce it: `quoter` the `quotation` skill, `valuer` the `valuation` skill,
|
|
13
13
|
`payroll-clerk` the `timesheet` skill (all three in `sitedesk-job`), and
|
|
14
|
-
`media-producer` the `sitedesk-media` skills (`
|
|
15
|
-
|
|
14
|
+
`media-producer` the two `sitedesk-media` skills (`microsite`, `socials`) over the
|
|
15
|
+
shared `web-designer` builder.
|
|
16
16
|
|
|
17
17
|
No tools, hooks, or commands are declared at this layer — the sub-plugins under
|
|
18
18
|
`plugins/` register via their own `PLUGIN.md` and carry the skills and commands.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: media-producer
|
|
3
|
-
description: "SiteDesk media producer. Delegate when the deliverable is marketing collateral — turning an operator's photos, website, social links and notes into a
|
|
3
|
+
description: "SiteDesk media producer. Delegate when the deliverable is marketing collateral — turning an operator's photos, website, social links and notes into a construction micro-site plus share-ready social tiles. Owns the media deliverable end to end, built on the shared web-designer builder: brand extract, single-page micro-site with construction framing, and Open Graph plus social tiles with gallery and captions. Not for job pricing, valuations or timesheets (those are the quoter, valuer and payroll-clerk)."
|
|
4
4
|
summary: "Your media producer — turns an operator's photos, website and notes into a marketing micro-site and social tiles."
|
|
5
5
|
model: claude-sonnet-5
|
|
6
6
|
tools: Skill, Read, Write, Edit, Bash, Glob, Grep, WebFetch, mcp__plugin_browser_browser__browser-navigate, mcp__plugin_browser_browser__browser-evaluate, mcp__plugin_browser_browser__browser-render, mcp__plugin_browser_browser__browser-resize, mcp__plugin_browser_browser__browser-screenshot, mcp__plugin_browser_browser__browser-wait-for
|
|
@@ -18,16 +18,27 @@ You never invent the operator's business content. Brand facts, copy and the sour
|
|
|
18
18
|
|
|
19
19
|
## What you own
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
You own two SiteDesk skills — the construction `microsite` wrapper and the
|
|
22
|
+
`socials` job/valuation adapter. The shared builder underneath them is the
|
|
23
|
+
`web-designer` plugin; you drive its skills directly. Load each skill on demand with
|
|
24
|
+
the `Skill` tool; it carries its own method.
|
|
22
25
|
|
|
23
26
|
| Skill | Sub-plugin | What it does |
|
|
24
27
|
|-------|------------|--------------|
|
|
25
|
-
| `
|
|
26
|
-
| `
|
|
27
|
-
| `microsite` | `sitedesk-media` | Build the scrollable single-page micro-site (`site/` directory: `index.html` + `llms.txt`, with JSON-LD) from the placeholder template, brand pack, photos and copy. |
|
|
28
|
-
| `socials` | `sitedesk-media` | Render exact-size Open Graph and social tiles (1200×628, 1200×1200, 1080×1350) as PNG for a named subject, with a PII gate for any client-data source, a gallery with download links, captions for all five platforms, and a redaction report; wires the site's `og:image` for micro-sites. Drives the on-device `browser` plugin to screenshot each tile at its exact viewport. |
|
|
28
|
+
| `microsite` | `sitedesk-media` | Build the construction micro-site by driving `web-designer:web-design` with the construction framing (schema, UK geography, the trade-shaped section labels) as inputs. Owns no template. |
|
|
29
|
+
| `socials` | `sitedesk-media` | Render social tiles for a SiteDesk subject. `microsite`/`bespoke` delegate to `web-designer:socials`; `job`/`valuation` read the job's progress under the money boundary and render through `web-designer:socials` bespoke mode. |
|
|
29
30
|
|
|
30
|
-
|
|
31
|
+
The generic builder underneath is web-designer's, dispatched directly:
|
|
32
|
+
|
|
33
|
+
| Skill | Plugin | What it does |
|
|
34
|
+
|-------|--------|--------------|
|
|
35
|
+
| `brand-extract` | `web-designer` | Turn an existing website into a brand pack — tokenized palette, logo/icon files, and a `brand.md` of company facts plus a "still unknown" list. |
|
|
36
|
+
| `web-design` | `web-designer` | The single canonical single-page site template, substitution contract, image convention, and page-state verification. `microsite` supplies the construction inputs. |
|
|
37
|
+
| `socials` | `web-designer` | The tile render core (exact-size PNG tiles, gallery, captions, PII gate, og:image wiring). SiteDesk's `socials` delegates here. |
|
|
38
|
+
|
|
39
|
+
For the full marketing deliverable — a site and its social tiles — orchestrate the
|
|
40
|
+
steps yourself: `web-designer:brand-extract` → `microsite` → `socials`. Run any one
|
|
41
|
+
skill directly when the upstream output already exists.
|
|
31
42
|
|
|
32
43
|
## Output contract
|
|
33
44
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sitedesk-media",
|
|
3
|
-
"description": "Turn an operator's raw inputs (a folder or zip of photos, an existing website URL, social-media links, and any notes about the business) into a finished
|
|
3
|
+
"description": "Turn an operator's raw inputs (a folder or zip of photos, an existing website URL, social-media links, and any notes about the business) into a finished construction micro-site plus a set of share-ready Open Graph and social tiles. Built on the shared web-designer builder: web-designer extracts the brand, builds the single-page site, and renders the tiles; SiteDesk supplies the construction framing and the job/valuation social subjects. Brand-agnostic: no client content ships here, and no builder template is copied.",
|
|
4
4
|
"version": "0.1.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Rubytech LLC"
|
|
@@ -1,49 +1,53 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: sitedesk-media
|
|
3
|
-
description: "Turn an operator's raw inputs (a folder or zip of photos, an existing website URL, social-media links, and any notes about the business) into a finished
|
|
3
|
+
description: "Turn an operator's raw inputs (a folder or zip of photos, an existing website URL, social-media links, and any notes about the business) into a finished construction micro-site plus a set of share-ready Open Graph and social tiles. Built on the shared web-designer builder: web-designer extracts the brand, builds the single-page site, and renders the tiles; SiteDesk supplies the construction framing and the job/valuation social subjects. Brand-agnostic: no client content ships here, and no builder template is copied."
|
|
4
4
|
tools: []
|
|
5
5
|
metadata: {"platform":{"optional":true,"embed":["admin"]}}
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# SiteDesk — Media
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
Marketing collateral for an independent building contractor, built on the shared
|
|
11
|
+
`web-designer` plugin. From an operator's photos, their existing website, social
|
|
12
|
+
links and any notes, the pipeline produces a self-contained `site/` directory — a
|
|
13
|
+
scrollable single-page micro-site (`index.html` + `llms.txt`) plus a `socials/`
|
|
14
|
+
folder of Open Graph and social tiles with a gallery and captions. web-designer owns
|
|
15
|
+
the brand extraction, the site template, and the tile render core; SiteDesk owns the
|
|
16
|
+
construction framing and the job/valuation social subjects. The agent never invents a
|
|
17
|
+
fact — it extracts and asks.
|
|
16
18
|
|
|
17
19
|
## When to Activate
|
|
18
20
|
|
|
19
|
-
The operator wants a
|
|
20
|
-
mixed source material (photos + a site + social links + notes)
|
|
21
|
+
The operator wants a construction micro-site and social images for a building firm,
|
|
22
|
+
built from mixed source material (photos + a site + social links + notes), or social
|
|
23
|
+
tiles for a live job's progress.
|
|
21
24
|
|
|
22
25
|
## Skills
|
|
23
26
|
|
|
24
27
|
| Skill | Purpose |
|
|
25
28
|
|-------|---------|
|
|
26
|
-
| `
|
|
27
|
-
| `
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
| `microsite` | Build the construction micro-site by driving `web-designer:web-design` with the construction framing (schema, UK geography, trade-shaped section labels) as inputs. Owns no template. |
|
|
30
|
+
| `socials` | Render social tiles for a SiteDesk subject. `microsite`/`bespoke` delegate to `web-designer:socials`; `job`/`valuation` read the job's progress under the money boundary and render through `web-designer:socials` bespoke mode. |
|
|
31
|
+
|
|
32
|
+
The generic builder — `brand-extract`, the `web-design` template and substitution
|
|
33
|
+
contract, and the `socials` tile render core — is the `web-designer` plugin's, used
|
|
34
|
+
as-is.
|
|
30
35
|
|
|
31
36
|
## Commands
|
|
32
37
|
|
|
33
|
-
`/make-media <images-dir-or-zip> [website-url] [social-links] [notes…]` —
|
|
38
|
+
`/make-media <images-dir-or-zip> [website-url] [social-links] [notes…]` — orchestrate
|
|
39
|
+
the full pipeline (`web-designer:brand-extract` → `microsite` → `socials`).
|
|
34
40
|
|
|
35
41
|
## Tools Used
|
|
36
42
|
|
|
37
43
|
No MCP server of its own. Skills operate via existing platform tools (Bash, Read,
|
|
38
|
-
Write, Edit, Glob, Grep, WebFetch)
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
section + image map is in `skills/microsite/references/sections.md`; the operator
|
|
49
|
-
question set is in `skills/make-media/references/intake-and-questions.md`.
|
|
44
|
+
Write, Edit, Glob, Grep, WebFetch) and the `Skill` tool to drive the web-designer
|
|
45
|
+
skills. Tile rendering is web-designer's, which drives the on-device `browser` plugin
|
|
46
|
+
to screenshot each tile at its exact size.
|
|
47
|
+
|
|
48
|
+
## No templates ship here
|
|
49
|
+
|
|
50
|
+
The site template, the placeholder dictionary, the section + image map, and the tile
|
|
51
|
+
render templates all live in `web-designer`. SiteDesk's `microsite` supplies the
|
|
52
|
+
construction values as inputs; SiteDesk's `socials` keeps only the `job`/`valuation`
|
|
53
|
+
source contract in `skills/socials/references/sources.md`.
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
# sitedesk-media
|
|
2
2
|
|
|
3
3
|
Turn an operator's raw inputs — a folder of photos, an existing website, social
|
|
4
|
-
links, and any notes about the business — into a finished
|
|
5
|
-
plus a set of **share-ready social tiles**.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
links, and any notes about the business — into a finished construction **micro-site**
|
|
5
|
+
plus a set of **share-ready social tiles**. Built on the shared `web-designer`
|
|
6
|
+
plugin: web-designer extracts the brand, builds the single-page site, and renders the
|
|
7
|
+
tiles; SiteDesk adds the construction framing and the job/valuation social subjects.
|
|
8
|
+
No client content and no builder template ship here.
|
|
9
9
|
|
|
10
10
|
## Pipeline
|
|
11
11
|
|
|
12
12
|
```
|
|
13
|
-
make-media (
|
|
14
|
-
├─ brand-extract website → palette tokens + logo/icon + company facts (+ gaps)
|
|
15
|
-
├─ microsite
|
|
16
|
-
└─ socials
|
|
13
|
+
/make-media (media-producer orchestrates the steps)
|
|
14
|
+
├─ web-designer:brand-extract website → palette tokens + logo/icon + company facts (+ gaps)
|
|
15
|
+
├─ microsite drives web-designer:web-design with construction framing → site/index.html + llms.txt
|
|
16
|
+
└─ socials microsite/bespoke → web-designer:socials; job/valuation → staged brief → web-designer:socials bespoke
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
Run it with the command:
|
|
@@ -22,9 +22,8 @@ Run it with the command:
|
|
|
22
22
|
/make-media <images-dir-or-zip> [website-url] [social-links] [notes…]
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
`socials` for just the tiles).
|
|
25
|
+
Each step is also usable on its own (`web-designer:brand-extract` for just tokens +
|
|
26
|
+
logo; `microsite` for just the page; `socials` for just the tiles).
|
|
28
27
|
|
|
29
28
|
## What you get
|
|
30
29
|
|
|
@@ -36,35 +35,26 @@ own (`brand-extract` for just tokens + logo; `microsite` for just the page;
|
|
|
36
35
|
socials.html # tile gallery + OG meta snippet
|
|
37
36
|
social-posts.md # captions per tile and platform
|
|
38
37
|
og.html # tile render page (kept for re-runs)
|
|
39
|
-
<output>/<brand-slug>-microsite.zip
|
|
40
38
|
```
|
|
41
39
|
|
|
42
40
|
## Principles
|
|
43
41
|
|
|
44
|
-
- **Ask, never invent.** Every
|
|
45
|
-
the
|
|
46
|
-
|
|
47
|
-
- **Keep claims as claims.** "Trading since 1987" is not an incorporation date
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
- **
|
|
51
|
-
|
|
52
|
-
|
|
42
|
+
- **Ask, never invent.** Every fact is about a real business. What the website and
|
|
43
|
+
the operator's notes don't supply, the agent asks for. A guessed year, phone
|
|
44
|
+
number, or testimonial is a defect.
|
|
45
|
+
- **Keep claims as claims.** "Trading since 1987" is not an incorporation date.
|
|
46
|
+
Company-registration facts come from the register or the operator, never a
|
|
47
|
+
marketing line.
|
|
48
|
+
- **The money boundary is absolute.** A job or valuation tile carries the progress,
|
|
49
|
+
never a figure: no contract, valuation, or payment amount, no `pctComplete` value,
|
|
50
|
+
no client identifier. The read never touches the money fields.
|
|
53
51
|
- **Plain register for all copy.** No em-dashes, no inflation vocabulary, no
|
|
54
52
|
AI-marketing cadence. Real testimonials are used verbatim.
|
|
55
|
-
- **Built for answer engines.** The site ships `JSON-LD` (business + FAQ),
|
|
56
|
-
Open Graph tiles, and an `llms.txt`.
|
|
57
53
|
|
|
58
|
-
##
|
|
54
|
+
## What lives where
|
|
59
55
|
|
|
60
|
-
|
|
61
|
-
skills/
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
skills/socials/templates/social-posts.md
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
The full token dictionary is in `skills/microsite/references/placeholders.md`; the
|
|
69
|
-
section + image map is in `skills/microsite/references/sections.md`; the operator
|
|
70
|
-
question set is in `skills/make-media/references/intake-and-questions.md`.
|
|
56
|
+
SiteDesk owns two thin skills — `skills/microsite/SKILL.md` (the construction
|
|
57
|
+
wrapper) and `skills/socials/SKILL.md` plus `skills/socials/references/sources.md`
|
|
58
|
+
(the job/valuation source contract and the money boundary). Everything else — the
|
|
59
|
+
site template, the placeholder dictionary, the section + image map, and the tile
|
|
60
|
+
render templates — is `web-designer`'s.
|
|
@@ -4,10 +4,10 @@ argument-hint: <images-dir-or-zip> [website-url] [social-links] [notes…]
|
|
|
4
4
|
allowed-tools: Bash, Read, Write, Edit, Glob, Grep, WebFetch, Skill, AskUserQuestion
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Build the media deliverable end-to-end on the inputs below, orchestrating the steps yourself.
|
|
8
8
|
|
|
9
9
|
Inputs: $ARGUMENTS
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Route: `web-designer:brand-extract` (website + logo + tokens + company facts) → ask the operator for every field still missing → `microsite` (drives `web-designer:web-design` with the construction framing to build the single-page site into `<output>/site/`) → `socials` in `microsite` mode (renders the Open Graph + social tiles, gallery and captions into `<output>/site/socials/` via `web-designer:socials`).
|
|
12
12
|
|
|
13
13
|
Never invent a fact. Where the website and the operator's notes do not supply a value, ask for it before building. Stop at the finished site + social bundle and report the paths.
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: microsite
|
|
3
|
-
description: Build
|
|
3
|
+
description: Build SiteDesk's construction micro-site by driving the shared web-designer builder with construction framing. Runs web-designer:web-design against the brand pack, the operator's copy and their curated photos, supplying the construction schema, UK geography, and the trade-shaped section labels as inputs. Owns no template — the single source is web-designer's. Use after brand-extract, or directly when the brand pack and copy already exist. Trigger phrases include "build the microsite", "lay out the landing page", "turn this brand + photos into a one-page site".
|
|
4
4
|
allowed-tools:
|
|
5
|
+
- Skill
|
|
5
6
|
- Bash
|
|
6
7
|
- Read
|
|
7
8
|
- Write
|
|
@@ -12,77 +13,53 @@ allowed-tools:
|
|
|
12
13
|
|
|
13
14
|
# microsite
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
actual photo — the template's alts are exemplar and must not survive as-is if they
|
|
66
|
-
don't match the picture.
|
|
67
|
-
|
|
68
|
-
### The 2000px rule
|
|
69
|
-
|
|
70
|
-
Never `Read` an image whose longest edge exceeds 2000px — measure first, preview a
|
|
71
|
-
downscaled `/tmp` copy if larger, delete it. Optimise to webp: body tier ~1300px
|
|
72
|
-
q82; hero tier source-resolution q88; the founder portrait kept tall.
|
|
73
|
-
|
|
74
|
-
## Verify every page state
|
|
75
|
-
|
|
76
|
-
Serve `site/` over a local HTTP server and check, at a 1280px desktop and a 390px
|
|
77
|
-
mobile viewport: no horizontal overflow, no broken images, the hero rotates, the
|
|
78
|
-
drawer opens with every link, the sticky sub-nav reveals on scroll, the back-to-top
|
|
79
|
-
appears and works, and both JSON-LD blocks are valid JSON once substituted. Bottom
|
|
80
|
-
-align paired images and equal-height cards where the layout calls for it.
|
|
81
|
-
|
|
82
|
-
## Completion criteria
|
|
83
|
-
|
|
84
|
-
- `site/index.html` and `site/llms.txt` exist with zero surviving `{{ }}`.
|
|
85
|
-
- Every referenced image resolves; alts describe the real photos.
|
|
86
|
-
- Desktop + mobile verified; hero, drawer, sub-nav, back-to-top all work.
|
|
87
|
-
- JSON-LD (`GeneralContractor`/`LocalBusiness`/the right `SCHEMA_TYPE`, plus
|
|
88
|
-
`FAQPage`) parses and matches the visible copy.
|
|
16
|
+
SiteDesk's construction micro-site is the shared `web-designer` site with
|
|
17
|
+
construction framing supplied as input. This skill owns **no template**: it drives
|
|
18
|
+
`web-designer:web-design`, which holds the one canonical template, substitution
|
|
19
|
+
contract, image convention, and page-state verification. Do not copy or hand-build
|
|
20
|
+
any HTML here.
|
|
21
|
+
|
|
22
|
+
## Method
|
|
23
|
+
|
|
24
|
+
Run `web-designer:web-design` (after `web-designer:brand-extract` has produced the
|
|
25
|
+
brand pack) against the curated photos and the operator's copy. Fill web-design's
|
|
26
|
+
tokens as it specifies, with these SiteDesk construction values for the framing
|
|
27
|
+
tokens it exposes:
|
|
28
|
+
|
|
29
|
+
**Schema and geography**
|
|
30
|
+
- `SCHEMA_TYPE` — `GeneralContractor`, or `HomeAndConstructionBusiness` for a
|
|
31
|
+
broader building firm; a narrower schema.org construction subtype when one fits.
|
|
32
|
+
- `COUNTRY_CODE` — `GB`.
|
|
33
|
+
- `PAGE_LANG` — `en-GB`.
|
|
34
|
+
- `COMPANY_NUMBER_LABEL` — `UK company number`.
|
|
35
|
+
|
|
36
|
+
**Section framing (the seven web-design label tokens)**
|
|
37
|
+
- `NAV_STORY_LABEL` — `Our story`
|
|
38
|
+
- `NAV_OFFER_LABEL` — `What we build`
|
|
39
|
+
- `NAV_HOW_LABEL` — `Our craft`
|
|
40
|
+
- `OFFER_EYEBROW` — `What we build`
|
|
41
|
+
- `HOW_EYEBROW` — `Ground to finish`
|
|
42
|
+
- `OFFER_SECTION_ID` — `build`
|
|
43
|
+
- `HOW_SECTION_ID` — `craft`
|
|
44
|
+
|
|
45
|
+
**Copy framing** — write the offer block (`BUILD_*`) as what the firm builds, and
|
|
46
|
+
the process block (`CRAFT_*`) as how a job runs ground to finish. The founder
|
|
47
|
+
section and its "latest update" cards read in the trade's voice — a real job, a
|
|
48
|
+
site the firm is on — never invented. Every copy and photo fact is the operator's;
|
|
49
|
+
a fact you cannot source is a gap you flag, not one you make up.
|
|
50
|
+
|
|
51
|
+
## Verify and report
|
|
52
|
+
|
|
53
|
+
`web-designer:web-design` owns the completion checks (zero surviving `{{ }}`, every
|
|
54
|
+
image resolves, desktop + mobile render, hero/drawer/sub-nav/back-to-top work, both
|
|
55
|
+
JSON-LD blocks parse). Confirm the built site shows the construction framing — the
|
|
56
|
+
nav reads `Our story` / `What we build` / `Our craft`, and the JSON-LD `@type` is
|
|
57
|
+
the construction schema — then report the built `site/` path and any gaps.
|
|
58
|
+
|
|
59
|
+
## What this does not do
|
|
60
|
+
|
|
61
|
+
- It ships no template and no placeholder or section reference — those live in
|
|
62
|
+
`web-designer:web-design`.
|
|
63
|
+
- It runs no brand extraction or intake of its own — `web-designer:brand-extract`
|
|
64
|
+
produces the brand pack and the pipeline gathers the copy.
|
|
65
|
+
- It does not deploy, and it does not render social tiles — that is `socials`.
|