@lifeaitools/rdc-skills 0.24.41 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.json +15 -15
- package/.claude-plugin/marketplace.json +21 -21
- package/.claude-plugin/plugin.json +1518 -1371
- package/.github/workflows/publish.yml +34 -34
- package/.github/workflows/self-test.yml +58 -58
- package/CHANGELOG.md +310 -310
- package/LICENSE +21 -21
- package/MANIFEST.md +221 -221
- package/README.md +375 -376
- package/README.sandbox.md +3 -3
- package/assets/watcher/viewer.html +164 -164
- package/bin/rdc-skills-mcp.mjs +316 -316
- package/commands/build.md +183 -183
- package/commands/collab.md +180 -180
- package/commands/deploy.md +152 -152
- package/commands/design.md +31 -31
- package/commands/edit.md +28 -28
- package/commands/fixit.md +150 -124
- package/commands/handoff.md +173 -173
- package/commands/help.md +95 -95
- package/commands/overnight.md +220 -220
- package/commands/plan.md +158 -158
- package/commands/preplan.md +131 -131
- package/commands/prototype.md +145 -145
- package/commands/release.md +49 -49
- package/commands/report.md +99 -99
- package/commands/review.md +120 -120
- package/commands/self-test.md +113 -113
- package/commands/status.md +86 -86
- package/commands/watch.md +98 -98
- package/commands/workitems.md +137 -137
- package/git-sha.json +1 -1
- package/guides/agent-bootstrap.md +295 -295
- package/guides/agents/backend.md +104 -104
- package/guides/agents/content.md +94 -94
- package/guides/agents/cs2.md +56 -56
- package/guides/agents/data.md +87 -87
- package/guides/agents/design.md +77 -77
- package/guides/agents/frontend.md +92 -92
- package/guides/agents/infrastructure.md +81 -81
- package/guides/agents/setup.md +281 -281
- package/guides/agents/verify.md +151 -151
- package/guides/agents/viz.md +106 -106
- package/guides/backend.md +146 -146
- package/guides/content.md +147 -147
- package/guides/cs2.md +190 -190
- package/guides/data.md +123 -123
- package/guides/design.md +116 -116
- package/guides/engineering-behavior.md +43 -43
- package/guides/escalation-protocol.md +125 -125
- package/guides/frontend.md +151 -151
- package/guides/history-md-spec.md +297 -297
- package/guides/infrastructure.md +179 -179
- package/guides/lessons-learned-spec.md +145 -151
- package/guides/output-contract.md +108 -108
- package/guides/publish-md-spec.md +289 -289
- package/guides/rdc-skills-startup.md +30 -30
- package/guides/verify.md +11 -11
- package/hooks/check-cwd.js +31 -31
- package/hooks/check-rdc-environment.js +164 -164
- package/hooks/check-services.js +6 -6
- package/hooks/check-stale-work-items.js +19 -19
- package/hooks/foreground-process-gate.js +128 -128
- package/hooks/gate-watchdog-selfcheck.js +257 -257
- package/hooks/hook-logger.js +25 -25
- package/hooks/lib/run-evidence-gate.mjs +241 -241
- package/hooks/no-stop-open-epics.js +127 -127
- package/hooks/post-tool-batch-gate.js +203 -203
- package/hooks/post-work-check.js +21 -21
- package/hooks/postcompact-log.js +13 -13
- package/hooks/precompact-log.js +13 -13
- package/hooks/rate-limit-retry.js +46 -46
- package/hooks/rdc-invocation-marker.js +157 -157
- package/hooks/rdc-output-contract-gate.js +94 -94
- package/hooks/require-work-item-on-commit.js +294 -294
- package/hooks/restart-brief.js +19 -19
- package/hooks/run-hidden-hook.ps1 +47 -47
- package/hooks/task-completed-gate.js +274 -274
- package/hooks/work-item-exit-gate.js +944 -944
- package/lib/catalog.mjs +236 -236
- package/lib/cloud-rewrite.mjs +155 -155
- package/package.json +57 -57
- package/rules/work-items-rpc.md +520 -520
- package/scaffold/templates/HISTORY.md.template +39 -39
- package/scaffold/templates/PUBLISH.md.template +21 -21
- package/scaffold/templates/brochure-studio-default.html +70 -70
- package/scripts/acceptance.mjs +502 -502
- package/scripts/fixtures/guides/bad-guide.md +15 -15
- package/scripts/fixtures/guides-clean/good-guide.md +16 -16
- package/scripts/install-rdc-skills.js +1289 -1289
- package/scripts/install.ps1 +202 -202
- package/scripts/install.sh +132 -132
- package/scripts/lib/assertions.mjs +287 -287
- package/scripts/lib/manifest-schema.mjs +754 -754
- package/scripts/lib/runner.mjs +465 -465
- package/scripts/lib/sandbox.mjs +435 -435
- package/scripts/prepack.mjs +32 -32
- package/scripts/rdc-brochure.mjs +482 -482
- package/scripts/rdc-design-cli.mjs +134 -134
- package/scripts/rebuild-mcp.mjs +107 -107
- package/scripts/self-test.mjs +1460 -1460
- package/scripts/stamp-git-sha.mjs +29 -29
- package/scripts/test-guide-validator.mjs +196 -196
- package/scripts/test-rdc-hooks.mjs +145 -145
- package/scripts/uninstall.ps1 +77 -77
- package/scripts/uninstall.sh +69 -69
- package/scripts/update.ps1 +43 -43
- package/scripts/update.sh +43 -43
- package/scripts/validate-place-histories.js +461 -461
- package/scripts/validate-publish-manifests.js +502 -424
- package/scripts/watch-init.mjs +100 -100
- package/skills/brochure/SKILL.md +107 -107
- package/skills/build/SKILL.md +563 -563
- package/skills/channel-formatter/SKILL.md +538 -533
- package/skills/co-develop/SKILL.md +196 -196
- package/skills/collab/SKILL.md +239 -239
- package/skills/convert/SKILL.md +167 -140
- package/skills/deploy/SKILL.md +541 -541
- package/skills/design/SKILL.md +211 -211
- package/skills/design/reference/ownership.md +16 -16
- package/skills/design/reference/rampa.md +92 -92
- package/skills/design/reference/studio-model.md +153 -153
- package/skills/edit/SKILL.md +98 -98
- package/skills/fixit/SKILL.md +203 -165
- package/skills/fs-mcp/SKILL.md +148 -148
- package/skills/handoff/SKILL.md +236 -236
- package/skills/help/SKILL.md +143 -143
- package/skills/housekeeping/SKILL.md +160 -219
- package/skills/lifeai-brochure-author/SKILL.md +340 -340
- package/skills/onramp/SKILL.md +248 -0
- package/skills/overnight/SKILL.md +251 -251
- package/skills/plan/SKILL.md +345 -345
- package/skills/preplan/SKILL.md +90 -90
- package/skills/prototype/SKILL.md +150 -150
- package/skills/rdc-brochurify/SKILL.md +245 -245
- package/skills/rdc-extract-verifier-rules/SKILL.md +191 -191
- package/skills/release/SKILL.md +140 -140
- package/skills/report/SKILL.md +100 -100
- package/skills/review/SKILL.md +152 -152
- package/skills/rpms-filemap/SKILL.cloud.md +111 -111
- package/skills/rpms-filemap/SKILL.md +111 -111
- package/skills/self-test/SKILL.md +132 -132
- package/skills/status/SKILL.md +99 -99
- package/skills/terminal-config/SKILL.md +62 -62
- package/skills/tests/MATRIX.md +54 -54
- package/skills/tests/README.md +47 -47
- package/skills/tests/onramp.test.json +87 -0
- package/skills/tests/rdc-brochure.test.json +34 -34
- package/skills/tests/rdc-build.test.json +36 -36
- package/skills/tests/rdc-channel-formatter.test.json +45 -45
- package/skills/tests/rdc-co-develop.test.json +29 -29
- package/skills/tests/rdc-collab.test.json +29 -29
- package/skills/tests/rdc-convert.test.json +35 -35
- package/skills/tests/rdc-deploy.test.json +30 -30
- package/skills/tests/rdc-design.test.json +27 -27
- package/skills/tests/rdc-edit.test.json +29 -29
- package/skills/tests/rdc-fixit.test.json +36 -36
- package/skills/tests/rdc-fs-mcp.test.json +36 -36
- package/skills/tests/rdc-handoff.test.json +28 -28
- package/skills/tests/rdc-help.test.json +29 -29
- package/skills/tests/rdc-housekeeping.test.json +28 -32
- package/skills/tests/rdc-lifeai-brochure-author.test.json +35 -35
- package/skills/tests/rdc-overnight.test.json +37 -37
- package/skills/tests/rdc-plan.test.json +27 -27
- package/skills/tests/rdc-preplan.test.json +31 -31
- package/skills/tests/rdc-prototype.test.json +28 -28
- package/skills/tests/rdc-rdc-brochurify.test.json +23 -23
- package/skills/tests/rdc-rdc-extract-verifier-rules.test.json +34 -34
- package/skills/tests/rdc-release.test.json +29 -29
- package/skills/tests/rdc-report.test.json +28 -28
- package/skills/tests/rdc-review.test.json +29 -29
- package/skills/tests/rdc-rpms-filemap.test.json +28 -28
- package/skills/tests/rdc-self-test.test.json +24 -24
- package/skills/tests/rdc-status.test.json +29 -29
- package/skills/tests/rdc-terminal-config.test.json +29 -29
- package/skills/tests/rdc-watch.test.json +24 -24
- package/skills/tests/rdc-workitems.test.json +27 -27
- package/skills/watch/SKILL.md +97 -97
- package/skills/workitems/SKILL.md +151 -151
- package/tests/acceptance.test.mjs +59 -59
- package/tests/channel-formatter.contract.test.mjs +251 -251
- package/tests/curl-surface.test.mjs +289 -289
- package/tests/harness-gates.test.mjs +325 -325
- package/tests/help-surface.test.mjs +61 -61
- package/tests/install-rdc-skills.test.mjs +49 -49
- package/tests/manifest-contract-fields.test.mjs +78 -78
- package/tests/mcp.test.mjs +271 -271
- package/tests/rdc-brochure.test.mjs +125 -125
- package/tests/require-work-item-on-commit.test.mjs +162 -162
- package/tests/run-evidence-gate.test.mjs +82 -82
- package/tests/skill-test-matrix.test.mjs +66 -66
- package/tests/validate-skills.js +27 -27
- package/tests/work-item-exit-gate-l2.test.mjs +368 -368
- package/tests/work-item-exit-gate-l3.test.mjs +197 -197
- package/RELEASE.md +0 -42
- package/tests/housekeeping-lessons-triage.test.mjs +0 -49
- package/tests/lessons-pipeline-contract.test.mjs +0 -26
- package/tests/release-contract.test.mjs +0 -16
|
@@ -1,533 +1,538 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: rdc:channel-formatter
|
|
3
|
-
description: "Usage `rdc:channel-formatter <channel|pack> [content]` — Apply precise, channel-native formatting and content repurposing to any output: LinkedIn, Twitter/X, Slack/Teams, Email (external/internal), Pitch Deck slides, Word/DOCX, PDF Report, Web/Landing Page, and multi-output content packs. Use EVERY TIME the user names an output channel/platform/document type, asks to 'write a post', 'draft an email', 'format this for', 'make this a slide', 'send to LinkedIn', 'write a tweet', 'social media post', 'turn this article into posts', 'make a content pack', 'make a social pack', or 'repurpose this article'. Each channel has its own Unicode strategy, emphasis system, length limits, and structure — never apply generic markdown to channel-specific output. This skill FORMATS, STRUCTURES, and REPURPOSES text only — for actual .docx/.pptx ↔ Markdown FILE conversion (either direction) use `rdc:convert` (build-corpus), not this skill. Self-contained: all channel and pack rules are inlined below (no external reference files)."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
> **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
|
|
7
|
-
> The formatted deliverable IS the output. Produce the channel-correct text directly.
|
|
8
|
-
> No tool-call narration, no raw markdown wrappers around channel output, no log dumps.
|
|
9
|
-
|
|
10
|
-
> If dispatching subagents or running as a subagent: read `{PROJECT_ROOT}/.rdc/guides/agent-bootstrap.md` first.
|
|
11
|
-
|
|
12
|
-
> **Sandbox contract:** This skill honors `RDC_TEST=1` per `guides/agent-bootstrap.md` § RDC_TEST Sandbox Contract. It writes no files and makes no external calls; under `RDC_TEST=1` behavior is unchanged (pure text transform).
|
|
13
|
-
|
|
14
|
-
# Channel Formatter
|
|
15
|
-
|
|
16
|
-
Format or repurpose output precisely for the target channel. This skill is
|
|
17
|
-
**self-contained** — every channel and pack rule is inlined below. Detect the
|
|
18
|
-
channel or pack, jump to its section, apply its rules exactly. Never apply
|
|
19
|
-
generic markdown to a channel that doesn't render it.
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## When to Use
|
|
24
|
-
|
|
25
|
-
Use this skill whenever the user asks to write, format, adapt, or repurpose
|
|
26
|
-
content for a specific channel, platform, document type, or output pack.
|
|
27
|
-
|
|
28
|
-
Common triggers:
|
|
29
|
-
- "write a LinkedIn post"
|
|
30
|
-
- "turn this article into social posts"
|
|
31
|
-
- "make a content pack"
|
|
32
|
-
- "make a social pack"
|
|
33
|
-
- "repurpose this article"
|
|
34
|
-
- "write a tweet/thread"
|
|
35
|
-
- "draft an email"
|
|
36
|
-
- "format this for Slack"
|
|
37
|
-
- "make this a slide"
|
|
38
|
-
- "write landing-page copy"
|
|
39
|
-
|
|
40
|
-
Do not use this skill for binary file conversion, PDF rendering, Brochurify
|
|
41
|
-
orchestration, or brochure JSX authoring; delegate those to the specialist
|
|
42
|
-
skills named in the scope boundary.
|
|
43
|
-
|
|
44
|
-
## Arguments
|
|
45
|
-
|
|
46
|
-
`rdc:channel-formatter <channel|pack> [content]`
|
|
47
|
-
|
|
48
|
-
- `<channel|pack>`: optional target such as `linkedin`, `twitter`,
|
|
49
|
-
`twitter-thread`, `slack`, `email-ext`, `email-int`, `pitch-deck`, `word`,
|
|
50
|
-
`pdf-report`, `web`, `strict-format`, `social-pack`, `campaign-pack`,
|
|
51
|
-
`exec-pack`, or `launch-pack`.
|
|
52
|
-
- `[content]`: optional source text, path reference, article, report, transcript,
|
|
53
|
-
rough draft, or surrounding conversation content.
|
|
54
|
-
|
|
55
|
-
## Channel Detection
|
|
56
|
-
|
|
57
|
-
| If user says / context is... | Channel | Go to section |
|
|
58
|
-
|-------------------------------------------------------|------------------|--------------------------|
|
|
59
|
-
| LinkedIn, post, share on LinkedIn | LinkedIn | [§ LinkedIn](#-linkedin) |
|
|
60
|
-
| Tweet, Twitter, X post, thread | Twitter/X | [§ Twitter / X](#-twitter--x) |
|
|
61
|
-
| Slack, Teams, Discord, chat message | Slack/Teams | [§ Slack / Teams](#-slack--teams) |
|
|
62
|
-
| Email to client/investor/external, cold outreach | Email (External) | [§ Email — External](#-email--external) |
|
|
63
|
-
| Email to team, internal, Slack alternative | Email (Internal) | [§ Email — Internal](#-email--internal) |
|
|
64
|
-
| Pitch deck, slide, investor slide, one-pager slide | Pitch Deck | [§ Pitch Deck](#-pitch-deck) |
|
|
65
|
-
| Word, DOCX, document, report, memo, letter, contract | Word/DOCX | [§ Word / DOCX](#-word--docx) |
|
|
66
|
-
| PDF report, annual report, white paper | PDF Report | [§ PDF Report](#-pdf-report) |
|
|
67
|
-
| Website, landing page, web copy | Web/Landing Page | [§ Web / Landing Page](#-web--landing-page) |
|
|
68
|
-
| Artifact, JSX, React component, Claude artifact | Artifact/JSX | → use the `jsx-author` / `impeccable` skill instead |
|
|
69
|
-
|
|
70
|
-
### Pack Detection
|
|
71
|
-
|
|
72
|
-
| If user says / context is... | Mode | Go to section |
|
|
73
|
-
|-------------------------------------------------------|------------------|-------------------------------|
|
|
74
|
-
| social pack, content pack, posts from this, repurpose this article for social | `social-pack` | [§ Content Repurposing Packs](#-content-repurposing-packs) |
|
|
75
|
-
| campaign pack, launch campaign, article into email + social + web | `campaign-pack` | [§ Content Repurposing Packs](#-content-repurposing-packs) |
|
|
76
|
-
| exec pack, executive pack, leadership summary, internal briefing | `exec-pack` | [§ Content Repurposing Packs](#-content-repurposing-packs) |
|
|
77
|
-
| launch pack, announce this, launch posts | `launch-pack` | [§ Content Repurposing Packs](#-content-repurposing-packs) |
|
|
78
|
-
| strict format, preserve wording, do not rewrite | `strict-format` | [§ Repurposing Modes](#-repurposing-modes) |
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
## Workflow
|
|
83
|
-
|
|
84
|
-
1. **Detect channel or pack mode** from the request using the tables above.
|
|
85
|
-
2. **Classify the source**: already-drafted copy, long article/report, transcript, notes, or brief.
|
|
86
|
-
3. **For thin or under-specified long sources**, enrich before writing instead
|
|
87
|
-
of inventing context:
|
|
88
|
-
- If the source names a corpus path, read it.
|
|
89
|
-
- Otherwise search/read the approved corpus first when available. Resolve
|
|
90
|
-
`CORPUS_ROOT` (usually `H:/My Drive/global-corpus`) and
|
|
91
|
-
`LOCAL_CORPUS_ROOT` (usually `C:/Dev/local-corpus`) before searching the
|
|
92
|
-
repo. If environment variables are not visible, try those default paths.
|
|
93
|
-
- The corpus search must use an explicit corpus path in the tool arguments
|
|
94
|
-
(`H:/My Drive/global-corpus` or `C:/Dev/local-corpus`). A relative repo
|
|
95
|
-
search does not count as enrichment.
|
|
96
|
-
- Use `Grep`/`Glob`/`Read` or the environment's equivalent tools so the
|
|
97
|
-
transcript records what was consulted.
|
|
98
|
-
- Use web search only when the requested output needs current/public facts,
|
|
99
|
-
the user asks for external context, or corpus context is absent and network
|
|
100
|
-
search is allowed. Cite/use only what the search actually supports.
|
|
101
|
-
- Searching only the project repo is not enough for enrichment unless the
|
|
102
|
-
source itself points to a repo-local corpus file.
|
|
103
|
-
- If neither corpus nor web context is available, keep the output sparse and
|
|
104
|
-
mark missing context in assumptions; do not fill gaps creatively.
|
|
105
|
-
4. **For long sources**, extract thesis, audience, proof points, CTA, constraints, and factual risks before writing.
|
|
106
|
-
5. **Jump to the target channel or pack section** below and apply all rules exactly — do not rely on memory.
|
|
107
|
-
6. **Never mix** markdown conventions across channels.
|
|
108
|
-
7. If the channel or pack is ambiguous, ask once: "Is this for [Channel A] or [Channel B]?"
|
|
109
|
-
8. Produce the formatted or repurposed output directly as the deliverable.
|
|
110
|
-
9. Treat extraction notes and source-fidelity guardrails as internal scratchwork.
|
|
111
|
-
Do not print a "Long-Source Extraction Checklist", factual guardrail list, or
|
|
112
|
-
absent-topic list unless the user explicitly asks for analysis.
|
|
113
|
-
|
|
114
|
-
## Hard Rules (all channels)
|
|
115
|
-
|
|
116
|
-
- Never apply generic markdown (`##`, `**`, `-`, etc.) to LinkedIn, Email, Slack, or Twitter output.
|
|
117
|
-
- Never use raw LaTeX in LinkedIn, Email, Slack, or Twitter — use Unicode math symbols.
|
|
118
|
-
- Never use Word Styles notation in plain-text channels.
|
|
119
|
-
- Always match the tone register of the channel (formal ≠ casual ≠ punchy).
|
|
120
|
-
- For LIFEAI/PRT/RDC content, maintain REGEN-MODE voice unless Author-Mode is active.
|
|
121
|
-
- When repurposing a long source, preserve the source thesis and never invent unsupported statistics, quotes, names, dates, citations, results, or commitments.
|
|
122
|
-
- If the source lacks a needed CTA, audience, proof point, or date, either use a clearly generic placeholder or state the assumption before the polished output.
|
|
123
|
-
|
|
124
|
-
> ## ⛔ Scope boundary — this skill FORMATS text; it does NOT convert files
|
|
125
|
-
> This skill governs **how to structure and format content** for a channel. It never
|
|
126
|
-
> reads or writes binary office files. For the actual **Word ↔ Markdown (and .pptx/.ppt)
|
|
127
|
-
> file conversion — in either direction — use `build-corpus` / the `rdc:convert` skill**,
|
|
128
|
-
> never this one. So: "convert this .docx to markdown" / "turn this markdown into a Word
|
|
129
|
-
> doc" → **`rdc:convert`**. "format this content the Word way / write it for LinkedIn" →
|
|
130
|
-
> this skill. The Word/DOCX and PDF sections below describe target structure only; producing
|
|
131
|
-
> the actual `.docx`/`.pdf` artifact is `rdc:convert` / `rdc:brochure`, not channel-formatter.
|
|
132
|
-
>
|
|
133
|
-
>
|
|
134
|
-
>
|
|
135
|
-
>
|
|
136
|
-
>
|
|
137
|
-
>
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
when the
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
### `
|
|
159
|
-
Repurpose
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
-
|
|
169
|
-
-
|
|
170
|
-
|
|
171
|
-
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
-
|
|
177
|
-
-
|
|
178
|
-
|
|
179
|
-
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
-
|
|
185
|
-
-
|
|
186
|
-
|
|
187
|
-
-
|
|
188
|
-
|
|
189
|
-
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
-
|
|
194
|
-
-
|
|
195
|
-
|
|
196
|
-
-
|
|
197
|
-
|
|
198
|
-
- **
|
|
199
|
-
- **
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
-
|
|
203
|
-
|
|
204
|
-
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
-
|
|
282
|
-
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
```
|
|
308
|
-
**
|
|
309
|
-
```
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
```
|
|
313
|
-
**
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
###
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
###
|
|
341
|
-
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
###
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
###
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
###
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
1
|
+
---
|
|
2
|
+
name: rdc:channel-formatter
|
|
3
|
+
description: "Usage `rdc:channel-formatter <channel|pack> [content]` — Apply precise, channel-native formatting and content repurposing to any output: LinkedIn, Twitter/X, Slack/Teams, Email (external/internal), Pitch Deck slides, Word/DOCX, PDF Report, Web/Landing Page, and multi-output content packs. Use EVERY TIME the user names an output channel/platform/document type, asks to 'write a post', 'draft an email', 'format this for', 'make this a slide', 'send to LinkedIn', 'write a tweet', 'social media post', 'turn this article into posts', 'make a content pack', 'make a social pack', or 'repurpose this article'. Each channel has its own Unicode strategy, emphasis system, length limits, and structure — never apply generic markdown to channel-specific output. This skill FORMATS, STRUCTURES, and REPURPOSES text only — for actual .docx/.pptx ↔ Markdown FILE conversion (either direction) use `rdc:convert` (build-corpus), not this skill. Self-contained: all channel and pack rules are inlined below (no external reference files)."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
> **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
|
|
7
|
+
> The formatted deliverable IS the output. Produce the channel-correct text directly.
|
|
8
|
+
> No tool-call narration, no raw markdown wrappers around channel output, no log dumps.
|
|
9
|
+
|
|
10
|
+
> If dispatching subagents or running as a subagent: read `{PROJECT_ROOT}/.rdc/guides/agent-bootstrap.md` first.
|
|
11
|
+
|
|
12
|
+
> **Sandbox contract:** This skill honors `RDC_TEST=1` per `guides/agent-bootstrap.md` § RDC_TEST Sandbox Contract. It writes no files and makes no external calls; under `RDC_TEST=1` behavior is unchanged (pure text transform).
|
|
13
|
+
|
|
14
|
+
# Channel Formatter
|
|
15
|
+
|
|
16
|
+
Format or repurpose output precisely for the target channel. This skill is
|
|
17
|
+
**self-contained** — every channel and pack rule is inlined below. Detect the
|
|
18
|
+
channel or pack, jump to its section, apply its rules exactly. Never apply
|
|
19
|
+
generic markdown to a channel that doesn't render it.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## When to Use
|
|
24
|
+
|
|
25
|
+
Use this skill whenever the user asks to write, format, adapt, or repurpose
|
|
26
|
+
content for a specific channel, platform, document type, or output pack.
|
|
27
|
+
|
|
28
|
+
Common triggers:
|
|
29
|
+
- "write a LinkedIn post"
|
|
30
|
+
- "turn this article into social posts"
|
|
31
|
+
- "make a content pack"
|
|
32
|
+
- "make a social pack"
|
|
33
|
+
- "repurpose this article"
|
|
34
|
+
- "write a tweet/thread"
|
|
35
|
+
- "draft an email"
|
|
36
|
+
- "format this for Slack"
|
|
37
|
+
- "make this a slide"
|
|
38
|
+
- "write landing-page copy"
|
|
39
|
+
|
|
40
|
+
Do not use this skill for binary file conversion, PDF rendering, Brochurify
|
|
41
|
+
orchestration, or brochure JSX authoring; delegate those to the specialist
|
|
42
|
+
skills named in the scope boundary.
|
|
43
|
+
|
|
44
|
+
## Arguments
|
|
45
|
+
|
|
46
|
+
`rdc:channel-formatter <channel|pack> [content]`
|
|
47
|
+
|
|
48
|
+
- `<channel|pack>`: optional target such as `linkedin`, `twitter`,
|
|
49
|
+
`twitter-thread`, `slack`, `email-ext`, `email-int`, `pitch-deck`, `word`,
|
|
50
|
+
`pdf-report`, `web`, `strict-format`, `social-pack`, `campaign-pack`,
|
|
51
|
+
`exec-pack`, or `launch-pack`.
|
|
52
|
+
- `[content]`: optional source text, path reference, article, report, transcript,
|
|
53
|
+
rough draft, or surrounding conversation content.
|
|
54
|
+
|
|
55
|
+
## Channel Detection
|
|
56
|
+
|
|
57
|
+
| If user says / context is... | Channel | Go to section |
|
|
58
|
+
|-------------------------------------------------------|------------------|--------------------------|
|
|
59
|
+
| LinkedIn, post, share on LinkedIn | LinkedIn | [§ LinkedIn](#-linkedin) |
|
|
60
|
+
| Tweet, Twitter, X post, thread | Twitter/X | [§ Twitter / X](#-twitter--x) |
|
|
61
|
+
| Slack, Teams, Discord, chat message | Slack/Teams | [§ Slack / Teams](#-slack--teams) |
|
|
62
|
+
| Email to client/investor/external, cold outreach | Email (External) | [§ Email — External](#-email--external) |
|
|
63
|
+
| Email to team, internal, Slack alternative | Email (Internal) | [§ Email — Internal](#-email--internal) |
|
|
64
|
+
| Pitch deck, slide, investor slide, one-pager slide | Pitch Deck | [§ Pitch Deck](#-pitch-deck) |
|
|
65
|
+
| Word, DOCX, document, report, memo, letter, contract | Word/DOCX | [§ Word / DOCX](#-word--docx) |
|
|
66
|
+
| PDF report, annual report, white paper | PDF Report | [§ PDF Report](#-pdf-report) |
|
|
67
|
+
| Website, landing page, web copy | Web/Landing Page | [§ Web / Landing Page](#-web--landing-page) |
|
|
68
|
+
| Artifact, JSX, React component, Claude artifact | Artifact/JSX | → use the `jsx-author` / `impeccable` skill instead |
|
|
69
|
+
|
|
70
|
+
### Pack Detection
|
|
71
|
+
|
|
72
|
+
| If user says / context is... | Mode | Go to section |
|
|
73
|
+
|-------------------------------------------------------|------------------|-------------------------------|
|
|
74
|
+
| social pack, content pack, posts from this, repurpose this article for social | `social-pack` | [§ Content Repurposing Packs](#-content-repurposing-packs) |
|
|
75
|
+
| campaign pack, launch campaign, article into email + social + web | `campaign-pack` | [§ Content Repurposing Packs](#-content-repurposing-packs) |
|
|
76
|
+
| exec pack, executive pack, leadership summary, internal briefing | `exec-pack` | [§ Content Repurposing Packs](#-content-repurposing-packs) |
|
|
77
|
+
| launch pack, announce this, launch posts | `launch-pack` | [§ Content Repurposing Packs](#-content-repurposing-packs) |
|
|
78
|
+
| strict format, preserve wording, do not rewrite | `strict-format` | [§ Repurposing Modes](#-repurposing-modes) |
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Workflow
|
|
83
|
+
|
|
84
|
+
1. **Detect channel or pack mode** from the request using the tables above.
|
|
85
|
+
2. **Classify the source**: already-drafted copy, long article/report, transcript, notes, or brief.
|
|
86
|
+
3. **For thin or under-specified long sources**, enrich before writing instead
|
|
87
|
+
of inventing context:
|
|
88
|
+
- If the source names a corpus path, read it.
|
|
89
|
+
- Otherwise search/read the approved corpus first when available. Resolve
|
|
90
|
+
`CORPUS_ROOT` (usually `H:/My Drive/global-corpus`) and
|
|
91
|
+
`LOCAL_CORPUS_ROOT` (usually `C:/Dev/local-corpus`) before searching the
|
|
92
|
+
repo. If environment variables are not visible, try those default paths.
|
|
93
|
+
- The corpus search must use an explicit corpus path in the tool arguments
|
|
94
|
+
(`H:/My Drive/global-corpus` or `C:/Dev/local-corpus`). A relative repo
|
|
95
|
+
search does not count as enrichment.
|
|
96
|
+
- Use `Grep`/`Glob`/`Read` or the environment's equivalent tools so the
|
|
97
|
+
transcript records what was consulted.
|
|
98
|
+
- Use web search only when the requested output needs current/public facts,
|
|
99
|
+
the user asks for external context, or corpus context is absent and network
|
|
100
|
+
search is allowed. Cite/use only what the search actually supports.
|
|
101
|
+
- Searching only the project repo is not enough for enrichment unless the
|
|
102
|
+
source itself points to a repo-local corpus file.
|
|
103
|
+
- If neither corpus nor web context is available, keep the output sparse and
|
|
104
|
+
mark missing context in assumptions; do not fill gaps creatively.
|
|
105
|
+
4. **For long sources**, extract thesis, audience, proof points, CTA, constraints, and factual risks before writing.
|
|
106
|
+
5. **Jump to the target channel or pack section** below and apply all rules exactly — do not rely on memory.
|
|
107
|
+
6. **Never mix** markdown conventions across channels.
|
|
108
|
+
7. If the channel or pack is ambiguous, ask once: "Is this for [Channel A] or [Channel B]?"
|
|
109
|
+
8. Produce the formatted or repurposed output directly as the deliverable.
|
|
110
|
+
9. Treat extraction notes and source-fidelity guardrails as internal scratchwork.
|
|
111
|
+
Do not print a "Long-Source Extraction Checklist", factual guardrail list, or
|
|
112
|
+
absent-topic list unless the user explicitly asks for analysis.
|
|
113
|
+
|
|
114
|
+
## Hard Rules (all channels)
|
|
115
|
+
|
|
116
|
+
- Never apply generic markdown (`##`, `**`, `-`, etc.) to LinkedIn, Email, Slack, or Twitter output.
|
|
117
|
+
- Never use raw LaTeX in LinkedIn, Email, Slack, or Twitter — use Unicode math symbols.
|
|
118
|
+
- Never use Word Styles notation in plain-text channels.
|
|
119
|
+
- Always match the tone register of the channel (formal ≠ casual ≠ punchy).
|
|
120
|
+
- For LIFEAI/PRT/RDC content, maintain REGEN-MODE voice unless Author-Mode is active.
|
|
121
|
+
- When repurposing a long source, preserve the source thesis and never invent unsupported statistics, quotes, names, dates, citations, results, or commitments.
|
|
122
|
+
- If the source lacks a needed CTA, audience, proof point, or date, either use a clearly generic placeholder or state the assumption before the polished output.
|
|
123
|
+
|
|
124
|
+
> ## ⛔ Scope boundary — this skill FORMATS text; it does NOT convert files
|
|
125
|
+
> This skill governs **how to structure and format content** for a channel. It never
|
|
126
|
+
> reads or writes binary office files. For the actual **Word ↔ Markdown (and .pptx/.ppt)
|
|
127
|
+
> file conversion — in either direction — use `build-corpus` / the `rdc:convert` skill**,
|
|
128
|
+
> never this one. So: "convert this .docx to markdown" / "turn this markdown into a Word
|
|
129
|
+
> doc" → **`rdc:convert`**. "format this content the Word way / write it for LinkedIn" →
|
|
130
|
+
> this skill. The Word/DOCX and PDF sections below describe target structure only; producing
|
|
131
|
+
> the actual `.docx`/`.pdf` artifact is `rdc:convert` / `rdc:brochure`, not channel-formatter.
|
|
132
|
+
>
|
|
133
|
+
> **Work in Markdown, materialize at the end.** Draft and format everything as Markdown
|
|
134
|
+
> ("MD time" — cheap tokens, clean diffs); only hand off to `rdc:convert` to emit the
|
|
135
|
+
> `.docx`/`.pptx` as the last step. build-corpus round-trips losslessly, so this costs
|
|
136
|
+
> no fidelity. See the build-corpus agent primer (`AGENTS.md`).
|
|
137
|
+
>
|
|
138
|
+
> Specialist routing:
|
|
139
|
+
> - Office/Markdown file conversion → `rdc:convert`
|
|
140
|
+
> - HTML/folder/zip/URL to PDF brochure rendering → `rdc:brochure`
|
|
141
|
+
> - Brochurify orchestration jobs → `rdc:brochurify`
|
|
142
|
+
> - Brochure JSX using `@lifeai/brochure-kit` → `lifeai-brochure-author`
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## § Repurposing Modes
|
|
147
|
+
|
|
148
|
+
Use these modes when the input is longer than the requested output, such as an
|
|
149
|
+
article, memo, transcript, report, rough draft, or notes.
|
|
150
|
+
|
|
151
|
+
### `strict-format`
|
|
152
|
+
Preserve the source wording and argument as much as the channel allows. Use this
|
|
153
|
+
when the user says "format only", "do not rewrite", "preserve wording", or when
|
|
154
|
+
legal/compliance precision matters. You may adjust line breaks, headings,
|
|
155
|
+
emphasis, bullet symbols, and channel-specific structure, but do not add new
|
|
156
|
+
claims or reframe the argument.
|
|
157
|
+
|
|
158
|
+
### `single-channel`
|
|
159
|
+
Repurpose the source into one target channel. Extract the usable argument,
|
|
160
|
+
choose the strongest hook for that channel, compress or expand to the channel's
|
|
161
|
+
native length, and produce one finished output.
|
|
162
|
+
|
|
163
|
+
### `social-pack`
|
|
164
|
+
Repurpose one source into a coordinated set of social outputs:
|
|
165
|
+
- LinkedIn thought-leadership post
|
|
166
|
+
- Short LinkedIn announcement or teaser variant
|
|
167
|
+
- Twitter/X single post
|
|
168
|
+
- Twitter/X thread
|
|
169
|
+
- Slack/Teams internal share
|
|
170
|
+
|
|
171
|
+
### `campaign-pack`
|
|
172
|
+
Repurpose one source into a small campaign kit:
|
|
173
|
+
- Everything in `social-pack`
|
|
174
|
+
- External email intro/blurb
|
|
175
|
+
- Web excerpt
|
|
176
|
+
- SEO meta title and meta description
|
|
177
|
+
- 3 CTA variants
|
|
178
|
+
|
|
179
|
+
### `exec-pack`
|
|
180
|
+
Repurpose one source for internal leadership alignment:
|
|
181
|
+
- Internal email summary
|
|
182
|
+
- Slack/Teams update
|
|
183
|
+
- Executive-summary paragraph
|
|
184
|
+
- 3 talking points
|
|
185
|
+
- Decision/ask line if the source supports one
|
|
186
|
+
|
|
187
|
+
### `launch-pack`
|
|
188
|
+
Repurpose one source for an announcement:
|
|
189
|
+
- LinkedIn launch post
|
|
190
|
+
- Twitter/X launch post
|
|
191
|
+
- Slack/Teams launch note
|
|
192
|
+
- External email blurb
|
|
193
|
+
- Web hero headline/subheadline/CTA
|
|
194
|
+
- 3 CTA variants
|
|
195
|
+
|
|
196
|
+
### Long-Source Extraction Checklist
|
|
197
|
+
Before writing from a long source, identify internally:
|
|
198
|
+
- **Thesis:** the central argument or announcement
|
|
199
|
+
- **Audience:** who this is for
|
|
200
|
+
- **Proof:** facts, examples, data, names, dates, or quotes explicitly present
|
|
201
|
+
- **CTA:** what the reader should do next
|
|
202
|
+
- **Tone:** formal, conversational, punchy, executive, regenerative, etc.
|
|
203
|
+
- **Constraints:** length, compliance, brand voice, channel quirks
|
|
204
|
+
- **Gaps:** missing proof, missing CTA, unsupported claims, unclear audience
|
|
205
|
+
|
|
206
|
+
### Source-Fidelity Rules
|
|
207
|
+
- Do not invent statistics, dates, quotes, citations, partnerships, revenue,
|
|
208
|
+
legal claims, customer names, or outcomes.
|
|
209
|
+
- Do not infer adjacent finance/reporting concepts that sound plausible but are
|
|
210
|
+
absent from the source, such as pro forma assumptions, reporting cadence,
|
|
211
|
+
offset mechanisms, governance structures, verification status, or portfolio
|
|
212
|
+
implications.
|
|
213
|
+
- If corpus or web context was consulted, use it only for facts it directly
|
|
214
|
+
supports. Do not blend generic domain knowledge into the source as if it were
|
|
215
|
+
documented.
|
|
216
|
+
- If the source provides a theme label without an explanation, keep the theme
|
|
217
|
+
label or paraphrase it conservatively. Do not add explanatory clauses that
|
|
218
|
+
define how it works, who governs it, how it is verified, how often it reports,
|
|
219
|
+
or what financial model it opposes unless those details are explicit.
|
|
220
|
+
- Do not contrast patient capital with quarters, earnings calls, fund cycles,
|
|
221
|
+
exits, venture speed, or portfolio management unless those words or concepts
|
|
222
|
+
appear in the source or consulted corpus/web material.
|
|
223
|
+
- Do not upgrade tentative language into certainty.
|
|
224
|
+
- Do not turn illustrative examples into facts.
|
|
225
|
+
- Preserve caveats when they affect meaning.
|
|
226
|
+
- If a stronger hook needs a proof point the source does not provide, write a
|
|
227
|
+
proof-neutral hook instead.
|
|
228
|
+
- If the source says a topic is absent, excluded, or not mentioned, treat that
|
|
229
|
+
as an internal guardrail. Do not repeat the absent topic in public-facing
|
|
230
|
+
channel copy, assumptions, caveats, notes, headings, or summaries unless the
|
|
231
|
+
user explicitly asks for a contrast, compliance note, or risk disclosure.
|
|
232
|
+
Strip absent-topic lists from the deliverable entirely.
|
|
233
|
+
- When assumptions are material, include a short "Assumptions:" line before the
|
|
234
|
+
deliverable rather than burying uncertainty in polished copy.
|
|
235
|
+
- Do not output your extraction checklist. The deliverable should start with the
|
|
236
|
+
requested channel/pack output, except for a brief "Assumptions:" line when a
|
|
237
|
+
material gap affects the copy.
|
|
238
|
+
- If you include an "Assumptions:" line, limit it to missing useful inputs such
|
|
239
|
+
as org name, audience, location, date, CTA, or link. Never list absent,
|
|
240
|
+
excluded, or not-mentioned topics in the assumptions line. If the only
|
|
241
|
+
uncertainty is an absent-topic guardrail, omit the assumptions line.
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## § Content Repurposing Packs
|
|
246
|
+
|
|
247
|
+
When a pack is requested, label each output clearly and make every item
|
|
248
|
+
channel-native. A pack is not a generic summary repeated in several lengths.
|
|
249
|
+
|
|
250
|
+
### `social-pack` Output Shape
|
|
251
|
+
1. `LinkedIn thought-leadership post` — 900-1300 characters, hook-first, white space, Unicode emphasis only when useful, up to 3 hashtags.
|
|
252
|
+
2. `LinkedIn short variant` — 400-700 characters, announcement or teaser style.
|
|
253
|
+
3. `Twitter/X single post` — 265 characters or fewer unless the user asks otherwise.
|
|
254
|
+
4. `Twitter/X thread` — 5-7 tweets, each self-contained and below 280 characters.
|
|
255
|
+
5. `Slack/Teams internal share` — 3-6 lines, direct, with a clear FYI/action/decision framing.
|
|
256
|
+
|
|
257
|
+
### `campaign-pack` Output Shape
|
|
258
|
+
1. Full `social-pack`
|
|
259
|
+
2. `External email intro` — subject line plus 80-150 word blurb with one ask
|
|
260
|
+
3. `Web excerpt` — 80-120 words, scannable, CTA-ready
|
|
261
|
+
4. `Meta title` — 50-60 characters
|
|
262
|
+
5. `Meta description` — 150-160 characters
|
|
263
|
+
6. `CTA variants` — 3 verb-led CTAs
|
|
264
|
+
|
|
265
|
+
### `exec-pack` Output Shape
|
|
266
|
+
1. `Internal email summary` — subject plus 6-12 lines
|
|
267
|
+
2. `Slack/Teams update` — 3-5 lines
|
|
268
|
+
3. `Executive summary paragraph` — 100-150 words
|
|
269
|
+
4. `Talking points` — 3 concise bullets/fragments
|
|
270
|
+
5. `Decision or ask` — one line, only if supported by source
|
|
271
|
+
|
|
272
|
+
### `launch-pack` Output Shape
|
|
273
|
+
1. `LinkedIn launch post` — announcement structure
|
|
274
|
+
2. `Twitter/X launch post` — single post
|
|
275
|
+
3. `Slack/Teams launch note` — internal update
|
|
276
|
+
4. `External email blurb` — subject plus short body
|
|
277
|
+
5. `Web hero` — headline, subheadline, CTA
|
|
278
|
+
6. `CTA variants` — 3 options
|
|
279
|
+
|
|
280
|
+
### Pack Quality Rules
|
|
281
|
+
- Vary hooks by channel; do not repeat the same first sentence everywhere.
|
|
282
|
+
- Keep the source thesis consistent across all outputs.
|
|
283
|
+
- Adapt CTA strength to the channel: softer on thought leadership, direct in
|
|
284
|
+
email/web, concise in Slack.
|
|
285
|
+
- Use channel-specific formatting rules from the sections below.
|
|
286
|
+
- If source proof is weak, use curiosity and framing instead of inflated claims.
|
|
287
|
+
- Do not include extraction notes, guardrail notes, or absent-topic caveats in
|
|
288
|
+
the pack. Those are reasoning aids, not channel outputs.
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## § LinkedIn
|
|
293
|
+
|
|
294
|
+
### Core Principles
|
|
295
|
+
- No markdown whatsoever — LinkedIn renders it as raw symbols.
|
|
296
|
+
- Unicode is the ONLY way to achieve bold, italic, and special emphasis.
|
|
297
|
+
- Emoticons are structural tools, not decoration — use them as bullet replacements and section markers.
|
|
298
|
+
- Hook in line 1 — LinkedIn truncates after ~2 lines before "see more".
|
|
299
|
+
- White space is content — single-line breaks create rhythm and readability.
|
|
300
|
+
|
|
301
|
+
### Unicode Character Sets
|
|
302
|
+
**Bold (Mathematical Bold)** — key terms, company names, headlines, CTAs:
|
|
303
|
+
```
|
|
304
|
+
𝗔𝗕𝗖𝗗𝗘𝗙𝗚𝗛𝗜𝗝𝗞𝗟𝗠𝗡𝗢𝗣𝗤𝗥𝗦𝗧𝗨𝗩𝗪𝗫𝗬𝗭
|
|
305
|
+
𝗮𝗯𝗰𝗱𝗲𝗳𝗴𝗵𝗶𝗷𝗸𝗹𝗺𝗻𝗼𝗽𝗾𝗿𝘀𝘁𝘂𝘃𝘄𝘅𝘆𝘇
|
|
306
|
+
𝟬𝟭𝟮𝟯𝟰𝟱𝟲𝟳𝟴𝟵
|
|
307
|
+
```
|
|
308
|
+
**Italic (Mathematical Italic)** — emphasis, quotes, sub-themes:
|
|
309
|
+
```
|
|
310
|
+
𝘈𝘉𝘊𝘋𝘌𝘍𝘎𝘏𝘐𝘑𝘒𝘓𝘔𝘕𝘖𝘗𝘘𝘙𝘚𝘛𝘜𝘝𝘞𝘟𝘠𝘡
|
|
311
|
+
𝘢𝘣𝘤𝘥𝘦𝘧𝘨𝘩𝘪𝘫𝘬𝘭𝘮𝘯𝘰𝘱𝘲𝘳𝘴𝘵𝘶𝘷𝘸𝘹𝘺𝘻
|
|
312
|
+
```
|
|
313
|
+
**Bold Italic:**
|
|
314
|
+
```
|
|
315
|
+
𝘼𝘽𝘾𝘿𝙀𝙁𝙂𝙃𝙄𝙅𝙆𝙇𝙈𝙉𝙊𝙋𝙌𝙍𝙎𝙏𝙐𝙑𝙒𝙓𝙔𝙕
|
|
316
|
+
𝙖𝙗𝙘𝙙𝙚𝙛𝙜𝙝𝙞𝙟𝙠𝙡𝙢𝙣𝙤𝙥𝙦𝙧𝙨𝙩𝙪𝙫𝙬𝙭𝙮𝙯
|
|
317
|
+
```
|
|
318
|
+
**Math / Equations** — Unicode symbols, never LaTeX: `× ÷ ± ≠ ≤ ≥ ≈ ∴ ∵ Σ Δ α β ∞ √ ² CO₂ H₂O → ← ⟺ % °`
|
|
319
|
+
Example: instead of `E = mc^2` write `E = mc²`; instead of `\alpha_{PRT}` write `αPRT`.
|
|
320
|
+
|
|
321
|
+
### Emoticons as Structure
|
|
322
|
+
Section openers / bullets: 🔹 primary · 🔸 secondary · ▸ tertiary · ✅ result · ❌ contrast · ⚡ urgency · 🌱 regenerative (LIFEAI/PRT) · 💡 insight · 📌 takeaway · 🔑 key · 📊 data · 🏗️ development · 🤝 partnership · 💰 capital · 🌍 planetary.
|
|
323
|
+
Dividers: `——————————————` · `▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬` · `· · · · · · · · · · · · · ·`
|
|
324
|
+
|
|
325
|
+
### Post Structure
|
|
326
|
+
**Standard (thought leadership):** hook line (no period, open loop) → blank → 3-6 short paragraphs (1-3 lines), emoticons as bullets → blank → insight/contrast line → blank → CTA (question/invitation) → blank → up to 3 hashtags.
|
|
327
|
+
**Announcement:** bold Unicode headline → what it is (2 sentences) → 🔹×3 key points → why it matters → CTA/link → 1-2 tags.
|
|
328
|
+
**Regenerative / LIFEAI (Dave voice):** manifesto opener (one line) → blank → problem with the old way (2-3 lines) → blank → 🌱 what we're building / how it differs / who it serves → blank → the stakes (one line) → blank → direct personal invitation → blank → `𝗗𝗮𝘃𝗲 𝗟𝗮𝗱𝗼𝘂𝗰𝗲𝘂𝗿 | LIFEAI | 𝘓𝘪𝘧𝘦 𝘣𝘦𝘧𝘰𝘳𝘦 𝘗𝘳𝘰𝘧𝘪𝘵𝘴` → `#RegenerativeCapital #PlaceRegeneration #LIFEAI`.
|
|
329
|
+
|
|
330
|
+
### Length
|
|
331
|
+
Thought leadership 900–1300 chars · Announcement 400–700 · Hot take 200–400 · Long-form native 1200–2000 words.
|
|
332
|
+
|
|
333
|
+
### Do NOT
|
|
334
|
+
❌ `**bold**` (literal asterisks) · ❌ `# Heading` (literal hash) · ❌ `-`/`•` bullets (use emoticons) · ❌ LaTeX · ❌ >5 hashtags · ❌ tagging people unless asked · ❌ walls of text (max 3 lines/paragraph).
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
## § Twitter / X
|
|
339
|
+
|
|
340
|
+
### Core Principles
|
|
341
|
+
- 280 characters hard limit per tweet. Hook is everything — first 5 words decide readership.
|
|
342
|
+
- Threads are for depth; single tweets for punchy takes. No markdown renders — plain text only.
|
|
343
|
+
- Minimal hashtags (1-2 max, only if genuinely searchable). End with a provocation/question when possible.
|
|
344
|
+
|
|
345
|
+
### Character Counting
|
|
346
|
+
- URLs always count as 23 chars (t.co). Media doesn't count. Line breaks = 1 char each. Leave a 10-15 char buffer — aim for 265 max.
|
|
347
|
+
|
|
348
|
+
### Single Tweet Structure
|
|
349
|
+
**Hot take:** provocative opener (≤10 words) → the turn/evidence (1-2 lines) → the landing.
|
|
350
|
+
**Announcement:** bold claim first → why it matters (1 line) → link/CTA.
|
|
351
|
+
**Regenerative (Dave):** manifesto line → old way vs new way → the invitation.
|
|
352
|
+
|
|
353
|
+
### Thread Structure
|
|
354
|
+
Tweet 1 = strongest hook (number `(1/7)` or use 🧵) → tweet 2 = context → tweets 3-n = one idea each → last tweet = recap + CTA/question. Each tweet must stand alone. Max 7-10 tweets — longer = blog post.
|
|
355
|
+
|
|
356
|
+
### Hook Formulas
|
|
357
|
+
Contrarian ("Most investors are wrong about regenerative land.") · Hard number ("We just unlocked $40M in stranded rural capital.") · Open loop ("Something broke in ESG investing. Here's what it missed:") · Bold declaration · Question · List tease ("3 things institutional capital gets wrong about place:").
|
|
358
|
+
|
|
359
|
+
### Hashtags & Emoji
|
|
360
|
+
Max 2 hashtags, end of tweet only, active communities only. Preferred LIFEAI tags: `#RegenerativeCapital #PlaceRegeneration #ImpactInvesting #RegenFinance`. Emoji 1-2 max as punctuation: 🌱 regen · 💰 capital · 🏗️ development · ⚡ urgency.
|
|
361
|
+
|
|
362
|
+
### Do NOT
|
|
363
|
+
❌ markdown · ❌ hashtag spam · ❌ "RT if you agree" · ❌ threads >10 tweets · ❌ passive openers ("I wanted to share…") · ❌ tagging without reason · ❌ ever exceed 280 chars (always count).
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
## § Slack / Teams
|
|
368
|
+
|
|
369
|
+
### Core Principles
|
|
370
|
+
- Brevity is respect (people read on their phone). One message = one thought. Use threads. Emoji are punctuation, not decoration.
|
|
371
|
+
|
|
372
|
+
### Slack Markdown (actually renders)
|
|
373
|
+
Bold `*bold*` · Italic `_italic_` · Strikethrough `~strike~` · Inline code `` `code` `` · Code block ```` ``` ```` · Blockquote `> text` · Bullets `• item`.
|
|
374
|
+
Note: `**bold**` (double asterisk) does NOT render in Slack — use single `*bold*`.
|
|
375
|
+
|
|
376
|
+
### Length
|
|
377
|
+
Quick question 1-2 lines · Status update 3-5 lines (bullets if 3+ items) · Decision request 5-8 lines · anything longer → thread or doc link.
|
|
378
|
+
|
|
379
|
+
### Structure by Type
|
|
380
|
+
**Question:** `Quick question on [topic] — [one-sentence question]?`
|
|
381
|
+
**Status update:** `*[Project]* update:` then `• Done: …` `• In progress: …` `• Blocked on: … — need [thing] from [person]`.
|
|
382
|
+
**Decision needed:** `Need a call on [topic] by [time].` → `Context: …` → `Options: A) … B) …` → `My lean: …` → `[@person] — your call.`
|
|
383
|
+
**Async FYI:** `FYI: [what happened] — no action needed. [link]`
|
|
384
|
+
|
|
385
|
+
### Emoji as Punctuation
|
|
386
|
+
✅ done/approved · ❌ no/blocked · 🔁 in progress · 👀 reviewing · 🙋 I'll take it · 📌 important · ⚡ urgent · 🤔 needs discussion · 💬 let's talk · 🔗 link follows.
|
|
387
|
+
|
|
388
|
+
### Do NOT
|
|
389
|
+
❌ walls of text (use a doc) · ❌ `**double asterisk bold**` · ❌ formal greetings ("Hi team, I hope everyone…") · ❌ passive asks ("Would anyone be able to…" → "Can you [name]…") · ❌ emoji overload (max 2-3) · ❌ cross-posting the same message.
|
|
390
|
+
|
|
391
|
+
---
|
|
392
|
+
|
|
393
|
+
## § Email — External
|
|
394
|
+
|
|
395
|
+
### Core Principles
|
|
396
|
+
- Plain prose, no markdown. Subject line determines open rate. First sentence justifies the email. One ask per email. Short paragraphs (2-4 sentences). Formal but human.
|
|
397
|
+
|
|
398
|
+
### Structure
|
|
399
|
+
`Subject:` → greeting (`Dear [First Name],`) → opening (1 sentence: context/connection) → body (¶1 reason, ¶2 value/evidence, ¶3 the one ask) → forward-looking closing line → sign-off, full name, title, org, 2-3 contact lines.
|
|
400
|
+
|
|
401
|
+
### Subject Lines
|
|
402
|
+
6-10 words; personalize. Cold: `[hook] — [value]` ("Regenerative capital for [Property]"). Follow-up: `Following up — [topic]`. Intro: `Introduction: [name] — [relevance]`. Request: `[Action] request — [context]`. Never use "Quick question" / "Checking in" / "Hope you're well" as a subject; never all caps.
|
|
403
|
+
|
|
404
|
+
### Tone by Recipient
|
|
405
|
+
Institutional/Family Office → formal, precise, lead with thesis + data · Foundation → warm, lead with impact · Government → neutral, process-oriented · Legal → exact, every claim qualified · Peer → professional, warmer · Media → newsworthy first.
|
|
406
|
+
|
|
407
|
+
### Openers (use/adapt)
|
|
408
|
+
"I'm reaching out because [specific reason tied to them]." · "We met at [event] — following up on [topic]." · "[Mutual contact] suggested I reach out regarding [topic]." Never open with "I hope this email finds you well." / "My name is X and I work at Y." / "I wanted to reach out to…".
|
|
409
|
+
|
|
410
|
+
### Closings & Sign-offs
|
|
411
|
+
"I'd welcome a 20-minute call at your convenience." / "Would you be open to a brief call this week or next?" Sign-offs: Respectfully / Yours sincerely (most formal) · Kind regards / Best regards (standard) · Warm regards (warm) · "In service of place," / "Regeneratively," (LIFEAI/Dave).
|
|
412
|
+
LIFEAI signature: `Dave Ladouceur` / `Founder, LIFEAI | Place Regeneration Trust` / `dave@life.ai | lifeai.com` / `Life before Profits.`
|
|
413
|
+
|
|
414
|
+
### Length
|
|
415
|
+
Cold outreach 150–250 words · Follow-up 80–150 · Proposal intro 250–400 · Investor update 300–500.
|
|
416
|
+
|
|
417
|
+
### Do NOT
|
|
418
|
+
❌ markdown · ❌ walls of text · ❌ >1 ask · ❌ passive voice on the ask · ❌ sycophantic openers/closers · ❌ unspecified attachments.
|
|
419
|
+
|
|
420
|
+
---
|
|
421
|
+
|
|
422
|
+
## § Email — Internal
|
|
423
|
+
|
|
424
|
+
### Core Principles
|
|
425
|
+
- Short, direct, action-oriented. Bullets fine and often preferred. Scannable subject. One topic per email. No pleasantries unless warranted.
|
|
426
|
+
|
|
427
|
+
### Structure
|
|
428
|
+
`Subject: [Action word] — [Topic]` (e.g. "Decision needed — Supabase migration") → optional 1-line context → direct body (2-4 short paragraphs or bullets) → clear next step on its own line → casual sign-off (Thanks / Dave / —D).
|
|
429
|
+
|
|
430
|
+
### Subject Prefixes (use consistently)
|
|
431
|
+
`ACTION:` recipient must do something · `DECISION:` approval/choice needed · `FYI:` informational · `URGENT:` same-day · `QUESTION:` single question · `UPDATE:` status. Example: `ACTION: Review PRT NAV calc before Friday`.
|
|
432
|
+
|
|
433
|
+
### Bullets & Tone
|
|
434
|
+
One idea per bullet, max 1 line, lead with the verb (Review… / Confirm… / Send…), no sub-bullets unless necessary. Direct without blunt; no "per my last email" energy; emoji sparingly.
|
|
435
|
+
|
|
436
|
+
### Length
|
|
437
|
+
Quick update 3-6 lines · Task assignment 6-12 · Internal brief ≤12-20 (longer → a doc).
|
|
438
|
+
|
|
439
|
+
### Do NOT
|
|
440
|
+
❌ markdown · ❌ long preambles · ❌ CC-ing everyone · ❌ "as per my previous email" · ❌ formal sign-offs internally.
|
|
441
|
+
|
|
442
|
+
---
|
|
443
|
+
|
|
444
|
+
## § Pitch Deck
|
|
445
|
+
|
|
446
|
+
### Core Principles
|
|
447
|
+
- One slide, one job. Headline IS the message (a statement, not a label). 3 bullets max. No prose on slides (sentences → speaker notes). Visual-first language. Investor slides lead with thesis, support with evidence.
|
|
448
|
+
|
|
449
|
+
### Slide Anatomy
|
|
450
|
+
Headline (full sentence takeaway, 12-15 words) → visual/data area (chart/diagram/table) → ≤3 bullets (fragments, not sentences) → source/footnote if cited (small, bottom-right).
|
|
451
|
+
|
|
452
|
+
### Headlines Are Assertions, Not Labels
|
|
453
|
+
❌ "Market Opportunity" → ✅ "A $4T regenerative land market with no institutional gateway" · ❌ "Our Solution" → ✅ "PRT converts stranded land assets into regenerative yield" · ❌ "The Team" → ✅ "30 years of place-based development across 3 continents" · ❌ "Financial Returns" → ✅ "8–12% cash yield with embedded ecological appreciation".
|
|
454
|
+
|
|
455
|
+
### Standard Deck Architecture (PRT/LIFEAI)
|
|
456
|
+
1 Cover · 2 The Problem · 3 The Opportunity (market + gap) · 4 Our Solution · 5 How It Works (process diagram) · 6 Traction/Proof · 7 Market/TAM · 8 Business Model · 9 Financial Projections · 10 Capital Structure (A/B/C sleeves) · 11 The Team · 12 The Ask (amount, use of funds, timeline) · 13 Appendix.
|
|
457
|
+
|
|
458
|
+
### Visual & Bullet Style
|
|
459
|
+
Describe visuals explicitly, e.g. `[VISUAL: horizontal capital-stack diagram — Lane A Senior Secured $Xm 6% DAF | Lane B Mezz $Xm 9% Family Office | Lane C Equity $Xm carry GP]`. Bullets: fragments, no periods, lead with metric ("8–12% cash yield") or verb ("Converts stranded assets…"), max 8 words.
|
|
460
|
+
Speaker notes: full conversational sentences expanding the slide — `[SPEAKER NOTE: …]`.
|
|
461
|
+
Typography (for JSX/design): Headline 28-36pt bold · Bullets 18-22pt · Data labels 14-16pt accent · Source 10-11pt gray · Section label 11-12pt caps.
|
|
462
|
+
|
|
463
|
+
### Do NOT
|
|
464
|
+
❌ prose on slides · ❌ >3 bullets · ❌ label headlines · ❌ >2 font sizes in bullet area · ❌ generic stock-photo descriptions · ❌ animations unless requested.
|
|
465
|
+
|
|
466
|
+
---
|
|
467
|
+
|
|
468
|
+
## § Word / DOCX
|
|
469
|
+
|
|
470
|
+
> **This section = how to STRUCTURE Word content (Styles, hierarchy, tables).** To
|
|
471
|
+
> generate an actual `.docx` file, or convert `.docx ↔ .md`, hand off to **`rdc:convert`
|
|
472
|
+
> (build-corpus)** — channel-formatter does not produce or parse binary files.
|
|
473
|
+
|
|
474
|
+
### Core Principles
|
|
475
|
+
- All formatting via **Word Styles** (never raw bold alone). Heading hierarchy is semantic (Heading 1/2/3, not font size). Tables use Word Table Styles, not markdown. Equations via Equation Editor (OMML). Explicit page structure (section breaks, headers/footers, page numbers).
|
|
476
|
+
|
|
477
|
+
### Style Hierarchy
|
|
478
|
+
`Title` (one, top) · `Subtitle` · `Heading 1/2/3/4` · `Normal` / `Body Text` · `List Bullet` / `List Bullet 2` · `List Number` / `List Number 2` · `Quote`/`Block Text` · `Caption` · `Table Grid` · `Intense Quote` (callouts) · `Header`/`Footer`.
|
|
479
|
+
|
|
480
|
+
### Document Types
|
|
481
|
+
**Executive Report/White Paper:** Title + Subtitle → page break → H1 Executive Summary → H1 TOC (auto field) → page break → numbered H1/H2 sections with `Table Grid` tables + captions → H1 References (APA) → H1 Appendices.
|
|
482
|
+
**Memo:** Title "MEMORANDUM" → bold-label TO/FROM/DATE/RE → rule → H2 Purpose / Background / Recommendation (List Bullet) → sign-off.
|
|
483
|
+
**Investment/Deal Doc (PRT/RDC):** Title + Subtitle "Confidential | Prepared by LIFEAI | Date" → page break → H1 Executive Summary → H1 Investment Thesis (H2 Market Opportunity, H2 Regenerative Framework + Five Capitals `Table Grid`) → H1 Financial Structure (H2 Capital Stack tranche table, H2 NAV Architecture w/ Equation objects) → H1 Risk Framework (risk matrix) → H1 Governance → H1 Appendices.
|
|
484
|
+
**Letter (formal):** sender block → date → recipient block → `Dear [Name],` → opening (purpose) → body → closing (next steps) → `Sincerely,` → signature.
|
|
485
|
+
|
|
486
|
+
### Tables, Equations, Page Setup
|
|
487
|
+
Tables: `Table Grid`, bold shaded header (`#F2F2F2`), left-align text / right-align numbers, `Caption` below ("Table X: …"). Equations: specify as Equation Editor objects, e.g. `[EQUATION OBJECT: αPRT = (regen_yield − WACC_conventional) + Σ(stewardship_delta)]` with caption. Page setup: Letter/A4, 1" margins, Calibri 11 / Times 12 body, 1.15–1.5 spacing, header (title left, page# right), footer (org left, date right), numbering from page 2.
|
|
488
|
+
|
|
489
|
+
### Do NOT
|
|
490
|
+
❌ manual bold instead of a Style for headings · ❌ tabs/spaces for indentation · ❌ `Shift+Enter` between paragraphs (use spacing) · ❌ markdown tables · ❌ inline LaTeX · ❌ >3 heading levels without justification.
|
|
491
|
+
|
|
492
|
+
---
|
|
493
|
+
|
|
494
|
+
## § PDF Report
|
|
495
|
+
|
|
496
|
+
### Core Principles
|
|
497
|
+
- Final, fixed, reader-facing. Structure non-negotiable: executive summary → body → references. All sections numbered; all tables/figures captioned. Formal prose (no bullets as primary structure). Page numbers, headers, footers required.
|
|
498
|
+
|
|
499
|
+
### Structure
|
|
500
|
+
Cover (title, type, org+logo, date | version | confidentiality) → Executive Summary (≤1 page: what it is, 3-5 findings, recommendations) → TOC (auto, clickable) → numbered body (1 Introduction/Context · 2-4 core · 5 Conclusions) → References (APA 7th, numbered) → Appendices (A, B, C…).
|
|
501
|
+
Section numbering: hierarchical decimal, max 3 levels (1.1.1), never 4.
|
|
502
|
+
|
|
503
|
+
### Tables, Figures, Equations
|
|
504
|
+
Tables: title above (`Table X: …`), bold shaded header, `Source:` below if external, `Note:` if needed. Figures: caption below (`Figure X: …`), source, bracketed alt-text. Equations: labeled `(Equation 1)` with a `Where:` variable key.
|
|
505
|
+
Typography: Georgia 11 / Garamond 12 body; H1 18 bold, H2 14 bold, H3 12 bold italic; 1.5 body spacing; 1.25" binding margin; page numbers bottom-center from page 2; footer `Org | Confidential | Date`.
|
|
506
|
+
Confidentiality labels: `CONFIDENTIAL` · `CONFIDENTIAL — For Recipient Only` · `FOR DISCUSSION PURPOSES ONLY` · `NOT FOR DISTRIBUTION` · (none = public).
|
|
507
|
+
|
|
508
|
+
### Do NOT
|
|
509
|
+
❌ markdown in final content · ❌ unnumbered sections · ❌ tables without titles/sources · ❌ figures without captions · ❌ invented data (mark "Illustrative") · ❌ exec summaries over one page · ❌ incomplete citations.
|
|
510
|
+
|
|
511
|
+
---
|
|
512
|
+
|
|
513
|
+
## § Web / Landing Page
|
|
514
|
+
|
|
515
|
+
### Core Principles
|
|
516
|
+
- Scannable first, readable second. Above the fold is everything. One page = one conversion goal. SEO-aware without keyword stuffing. CTA appears at least twice (above fold + bottom). Mobile-first (short paragraphs/sentences).
|
|
517
|
+
|
|
518
|
+
### Page Structure
|
|
519
|
+
Hero (H1 value prop 6-10 words · subheadline 1-2 sentences · CTA button verb+object · optional hero media) → Social proof/trust bar → Problem (name the pain, 2-3 short paragraphs or 3 cards) → Solution (the shift; icon + headline + 1-2 sentences feature/benefit pairs) → How It Works (3-4 numbered steps, 1 sentence each) → Proof/Results (large number + short label: "340 acres restored") → CTA section (urgency headline + friction-reducer subtext + button) → Footer.
|
|
520
|
+
|
|
521
|
+
### Headlines & Body
|
|
522
|
+
H1 ≤8 words (benefit, not feature, active voice, power words: transform/unlock/regenerate/built/proven) · H2 ≤12 · H3 ≤6. Body: paragraphs ≤3 sentences/50 words, sentences ≤20 words, second person ("you/your"), grade 8-10 reading level.
|
|
523
|
+
LIFEAI/PRT examples: H1 "The Capital Stack for Regenerative Land" · H2 "How PRT Turns Stranded Assets Into Living Investments" · H3 "Place Readiness" / "Covenant-Protected Yield" / "Verified Impact".
|
|
524
|
+
|
|
525
|
+
### CTA & SEO
|
|
526
|
+
CTA copy: verb + specific object ("Book Your 20-Minute Call", "See the Capital Structure", "Download the Investment Brief") — never "Submit"/"Click here"/"Learn more". SEO: primary keyword in H1 + first paragraph, secondary in H2s/body naturally, meta title 50-60 chars, meta description 150-160 chars, descriptive alt text on all images.
|
|
527
|
+
|
|
528
|
+
### Do NOT
|
|
529
|
+
❌ paragraphs >3 sentences above the fold · ❌ passive-voice CTAs · ❌ jargon without translation · ❌ carousels/sliders above the fold · ❌ >2 CTAs per section · ❌ generic headlines ("Welcome to Our Website") · ❌ markdown in final web copy (deliver clean prose with labeled sections).
|
|
530
|
+
|
|
531
|
+
---
|
|
532
|
+
|
|
533
|
+
## Provenance
|
|
534
|
+
|
|
535
|
+
Ported into rdc-skills from the `output-channel-formatter` claude.ai skill (frontend-design-skills pack).
|
|
536
|
+
Originally a multi-file skill (SKILL.md + `references/*.md`); inlined into this single self-contained
|
|
537
|
+
SKILL.md so it works identically across the CLI plugin, the claude.ai web client (via `rdc_skill_get`),
|
|
538
|
+
and Codex — the rdc-skills MCP serves only SKILL.md, so all channel rules must live here.
|