@synap-core/workspace-templates 0.11.0 → 0.23.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/README.md +483 -0
- package/automations/bookmark-enrichment.automation.json +321 -0
- package/automations/github-pr-events.automation.json +505 -0
- package/automations/mail-feed.automation.json +86 -0
- package/automations/ship-a-change-checks-green.automation.json +106 -0
- package/automations/ship-a-change-checks-red.automation.json +106 -0
- package/automations/ship-a-change-deployed.automation.json +56 -0
- package/automations/ship-a-change-pr-merged.automation.json +110 -0
- package/automations/ship-a-change-pr-opened.automation.json +104 -0
- package/automations/url-bookmark-capture.automation.json +132 -0
- package/capabilities/agency-skills.capability.json +157 -0
- package/capabilities/apify.capability.json +265 -0
- package/capabilities/apollo.capability.json +120 -0
- package/capabilities/arch-backend.capability.json +97 -0
- package/capabilities/arch-client-intelligence.capability.json +401 -0
- package/capabilities/backblaze-b2.capability.json +205 -0
- package/capabilities/cal-com.capability.json +266 -0
- package/capabilities/canva.capability.json +274 -0
- package/capabilities/claude-code-routines.capability.json +172 -0
- package/capabilities/claude-managed-agents.capability.json +215 -0
- package/capabilities/client-comms-report.capability.json +246 -0
- package/capabilities/content-idea-to-production.capability.json +29 -0
- package/capabilities/datagouv.capability.json +315 -0
- package/capabilities/discord-bot.capability.json +157 -0
- package/capabilities/dropbox.capability.json +281 -0
- package/capabilities/exa.capability.json +109 -0
- package/capabilities/fal-ai.capability.json +83 -0
- package/capabilities/fal-media-lab.capability.json +158 -0
- package/capabilities/fireflies.capability.json +191 -0
- package/capabilities/freellmapi.capability.json +114 -0
- package/capabilities/generic-apikey.capability.json +92 -0
- package/capabilities/github-merge.capability.json +99 -0
- package/capabilities/github-read.capability.json +325 -0
- package/capabilities/governance-tighten-recommender.capability.json +81 -0
- package/capabilities/jev.capability.json +226 -0
- package/capabilities/lead-conversion-enrollment.capability.json +246 -0
- package/capabilities/mail-feed.capability.json +277 -0
- package/capabilities/mailgun.capability.json +52 -0
- package/capabilities/nango-google.capability.json +639 -0
- package/capabilities/notion.capability.json +417 -0
- package/capabilities/omniroute.capability.json +137 -0
- package/capabilities/posthog-analytics.capability.json +258 -0
- package/capabilities/postiz.capability.json +467 -0
- package/capabilities/proactive-digest.capability.json +190 -0
- package/capabilities/proton.capability.json +288 -0
- package/capabilities/replicate-rvm.capability.json +97 -0
- package/capabilities/research-methods.capability.json +57 -0
- package/capabilities/shopify.capability.json +395 -0
- package/capabilities/slack.capability.json +369 -0
- package/capabilities/stripe.capability.json +420 -0
- package/capabilities/telegram-bridge.capability.json +56 -0
- package/capabilities/treg.capability.json +102 -0
- package/capabilities/unipile-linkedin.capability.json +471 -0
- package/capabilities/vercel.capability.json +424 -0
- package/dist/define-CPS0n8BV.d.ts +1331 -0
- package/dist/index.d.ts +189 -900
- package/dist/index.js +24654 -21639
- package/dist/index.js.map +1 -1
- package/dist/wire.d.ts +222 -0
- package/dist/wire.js +77 -0
- package/dist/wire.js.map +1 -0
- package/package.json +41 -27
- package/packs/bookmark-views-pack.json +33 -0
- package/packs/crm-pack.json +76 -0
- package/packs/customer-profile.json +28 -0
- package/packs/deep-research.playbook.json +30 -0
- package/packs/event-views-pack.json +33 -0
- package/packs/habit-profile.json +27 -0
- package/packs/hr-pack.json +54 -0
- package/packs/invoice-profile.json +28 -0
- package/packs/knowledge-base-pack.json +56 -0
- package/packs/meeting-profile.json +29 -0
- package/packs/product-profile.json +30 -0
- package/packs/project-management-pack.json +49 -0
- package/packs/recipe-profile.json +29 -0
- package/packs/task-views-pack.json +39 -0
- package/retired.yaml +136 -0
- package/skills/app-factory-build-slice/SKILL.md +70 -0
- package/skills/app-factory-build-slice.catalog.json +17 -0
- package/skills/app-factory-design-canvas/SKILL.md +96 -0
- package/skills/app-factory-design-canvas.catalog.json +17 -0
- package/skills/app-factory-design-review/SKILL.md +99 -0
- package/skills/app-factory-design-review.catalog.json +18 -0
- package/skills/app-factory-research/SKILL.md +123 -0
- package/skills/app-factory-research.catalog.json +17 -0
- package/skills/bookmark-enrichment/SKILL.md +40 -0
- package/skills/carousel-format/carousel-format.skill.json +18 -0
- package/skills/collage-broll/collage-broll.skill.json +20 -0
- package/skills/content-taste/content-taste.skill.json +18 -0
- package/skills/creative-director/creative-director.skill.json +18 -0
- package/skills/design-critique/SKILL.md +135 -0
- package/skills/design-critique.catalog.json +12 -0
- package/skills/designing-with-real-components/SKILL.md +140 -0
- package/skills/designing-with-real-components.catalog.json +12 -0
- package/skills/edit-loop/edit-loop.skill.json +25 -0
- package/skills/facecam-edit/facecam-edit.skill.json +24 -0
- package/skills/mapping-the-server/SKILL.md +54 -0
- package/skills/math-explainer-manimgx/math-explainer-manimgx.skill.json +20 -0
- package/skills/motion-quality-gates/motion-quality-gates.skill.json +20 -0
- package/skills/open-design-edit/open-design-edit.skill.json +24 -0
- package/skills/reading-client-progress/SKILL.md +65 -0
- package/skills/routing-to-channels/SKILL.md +54 -0
- package/skills/stellar-scf-grants-advisor/ASSOCIATE-CHEATSHEET.md +133 -0
- package/skills/stellar-scf-grants-advisor/ASSOCIATE-ONBOARDING-GUIDE.md +761 -0
- package/skills/stellar-scf-grants-advisor/CLIENT-FAQ.md +181 -0
- package/skills/stellar-scf-grants-advisor/PARTNER-HANDOVER.md +130 -0
- package/skills/stellar-scf-grants-advisor/SKILL.md +102 -0
- package/skills/stellar-scf-grants-advisor/examples/README.md +43 -0
- package/skills/stellar-scf-grants-advisor/examples/chat-summary-templates.md +158 -0
- package/skills/stellar-scf-grants-advisor/examples/corpus-comparable-rows.md +136 -0
- package/skills/stellar-scf-grants-advisor/examples/q10-team-rewrites.md +109 -0
- package/skills/stellar-scf-grants-advisor/examples/q2-description-rewrites.md +88 -0
- package/skills/stellar-scf-grants-advisor/examples/q6-integration-rewrites.md +107 -0
- package/skills/stellar-scf-grants-advisor/examples/tranche-structures.md +176 -0
- package/skills/stellar-scf-grants-advisor/reference/01-methodology.md +96 -0
- package/skills/stellar-scf-grants-advisor/reference/02-scoring-framework.md +199 -0
- package/skills/stellar-scf-grants-advisor/reference/03-rejection-patterns.md +241 -0
- package/skills/stellar-scf-grants-advisor/reference/04-winner-patterns.md +120 -0
- package/skills/stellar-scf-grants-advisor/reference/05-comeback-patterns.md +92 -0
- package/skills/stellar-scf-grants-advisor/reference/06-budget-benchmarks.md +125 -0
- package/skills/stellar-scf-grants-advisor/reference/07-integration-list.md +147 -0
- package/skills/stellar-scf-grants-advisor/reference/08-abstract-fields.md +258 -0
- package/skills/stellar-scf-grants-advisor/reference/09-build-fields.md +259 -0
- package/skills/stellar-scf-grants-advisor/reference/10-corpus-winners.md +135 -0
- package/skills/stellar-scf-grants-advisor/reference/11-corpus-rejects.md +267 -0
- package/skills/stellar-scf-grants-advisor/reference/12-client-communication.md +131 -0
- package/skills/stellar-scf-grants-advisor/reference/13-excel-output-spec.md +199 -0
- package/skills/stellar-scf-grants-advisor/reference/14-worked-examples.md +160 -0
- package/skills/stellar-scf-grants-advisor/templates/abstract-review-builder.py +253 -0
- package/skills/stellar-scf-grants-advisor/templates/build-review-builder.py +213 -0
- package/skills/video-direction/video-direction.skill.json +20 -0
- package/skills/video-style-vocabulary/video-style-vocabulary.skill.json +20 -0
- package/skills/video-toolbox/video-toolbox.skill.json +20 -0
- package/src/__fixtures__/lifecycle-presets.flat-before.json +205 -0
- package/src/agency-os.yaml +122 -0
- package/src/agent-os-skill-slugs.test.ts +65 -0
- package/src/apify-social-reader.test.ts +317 -0
- package/src/base.template.test.ts +25 -19
- package/src/base.yaml +95 -39
- package/src/blockchain-ecosystem.yaml +1 -0
- package/src/brand-library.yaml +525 -14
- package/src/builder-dev-fold.template.test.ts +113 -0
- package/src/builder.yaml +798 -92
- package/src/business-model-catalog-description.test.ts +47 -0
- package/src/business-model-grp.template.test.ts +214 -0
- package/src/business-model.yaml +598 -0
- package/src/catalog-safety.test.ts +198 -0
- package/src/catalog.template-items.test.ts +75 -0
- package/src/catalog.ts +85 -2
- package/src/civic-france.yaml +102 -0
- package/src/concept-guard.test.ts +28 -8
- package/src/concept-guard.ts +2 -2
- package/src/content-creation.template.test.ts +52 -0
- package/src/content-creation.yaml +192 -0
- package/src/content-os.edit-loop.template.test.ts +210 -0
- package/src/content-os.publish-due-posts.template.test.ts +261 -0
- package/src/content-os.template.test.ts +322 -0
- package/src/content-os.video-takes.template.test.ts +338 -0
- package/src/content-os.work-a-take.template.test.ts +125 -0
- package/src/content-os.yaml +1830 -39
- package/src/content-studio-retired.template.test.ts +82 -0
- package/src/corpus-flow-validity.test.ts +4 -5
- package/src/crm-absorbs-outreach.template.test.ts +117 -0
- package/src/crm-build-plan.template.test.ts +128 -0
- package/src/crm-lists.template.test.ts +96 -0
- package/src/crm-messages-cadence.template.test.ts +164 -0
- package/src/crm-one-send-door.template.test.ts +65 -0
- package/src/crm.yaml +1456 -181
- package/src/decisions-wave.template.test.ts +186 -0
- package/src/define.ts +130 -17
- package/src/design-to-implementation.template.test.ts +94 -0
- package/src/dist-freshness.test.ts +97 -0
- package/src/domain-template-type.test.ts +75 -0
- package/src/ecosystem.yaml +27 -66
- package/src/enterprise-os.yaml +10 -134
- package/src/facecam-edit.audio-studio.test.ts +188 -0
- package/src/fal-generate-image.test.ts +200 -0
- package/src/fal-media-lab-pod-files.test.ts +180 -0
- package/src/finance.yaml +254 -1
- package/src/foundation.yaml +130 -28
- package/src/frame-host-modules.d.mts +6 -0
- package/src/frame-host-modules.mjs +58 -0
- package/src/generate.mjs +9 -3
- package/src/github-merge.test.ts +210 -0
- package/src/grants.yaml +57 -17
- package/src/hr.yaml +39 -6
- package/src/index.ts +36 -1
- package/src/intent.test.ts +161 -0
- package/src/internal-runbook.yaml +19 -1
- package/src/jev.test.ts +356 -0
- package/src/legal.yaml +33 -1
- package/src/life-os.yaml +65 -240
- package/src/lifecycle-coverage.test.ts +124 -0
- package/src/lifecycle-declarations.test.ts +252 -0
- package/src/lifecycle-presets.test.ts +468 -0
- package/src/lifecycle-presets.ts +494 -0
- package/src/lifecycle-stuck.test.ts +46 -0
- package/src/lifecycle-waits.parity.test.ts +319 -0
- package/src/marketing.yaml +108 -4
- package/src/meetings-knowledge.yaml +18 -0
- package/src/networking.yaml +23 -2
- package/src/operations.yaml +304 -4
- package/src/pipeline-views.template.test.ts +88 -0
- package/src/playbook-goal-placeholders.test.ts +57 -0
- package/src/postiz-contract.test.ts +134 -0
- package/src/presentation-declarations.test.ts +174 -0
- package/src/process-contract.validate.test.ts +352 -0
- package/src/project-management.yaml +39 -740
- package/src/publish-body.d.mts +29 -0
- package/src/publish-body.mjs +74 -0
- package/src/publish-body.test.ts +74 -0
- package/src/publish-official-lib.test.ts +176 -0
- package/src/replicate-rvm.test.ts +504 -0
- package/src/research-base.yaml +119 -20
- package/src/research-decision.yaml +60 -3
- package/src/reserved-profile-slugs.test.ts +83 -0
- package/src/retired-goal-kinds.test.ts +58 -0
- package/src/role-reference-and-step-domain.test.ts +192 -0
- package/src/seed-obligation.test.ts +176 -0
- package/src/send-message-maps.test.ts +227 -0
- package/src/shared-role-ssot.test.ts +42 -1
- package/src/ship-a-change.template.test.ts +177 -0
- package/src/skills.test.ts +170 -0
- package/src/social.yaml +85 -27
- package/src/space-packages.freshness.test.ts +97 -0
- package/src/space-packages.generated.ts +40 -0
- package/src/space-packages.test.ts +125 -0
- package/src/space-packages.ts +73 -0
- package/src/start.test.ts +188 -0
- package/src/task-intents.test.ts +293 -0
- package/src/templates.ts +21639 -21522
- package/src/types.ts +443 -60
- package/src/unipile-publish-post.test.ts +162 -0
- package/src/validate-flow.drift.test.ts +2 -3
- package/src/validate-flow.ts +32 -2
- package/src/validate-onboarding.test.ts +59 -0
- package/src/validate.test.ts +156 -3
- package/src/validate.ts +1384 -7
- package/src/wire-core.ts +231 -0
- package/src/wire.test.ts +159 -0
- package/src/wire.ts +107 -0
- package/src/__fixtures__/report-automation-flow.json +0 -393
- package/src/agent-fleet.yaml +0 -1645
- package/src/business-developer.template.test.ts +0 -351
- package/src/business-developer.yaml +0 -860
- package/src/content-studio.yaml +0 -361
- package/src/dev-dashboard.yaml +0 -990
- package/src/outreach-comms.yaml +0 -486
- package/src/the-arch.yaml +0 -201
package/src/brand-library.yaml
CHANGED
|
@@ -11,6 +11,9 @@ meta:
|
|
|
11
11
|
color: "#B67A38"
|
|
12
12
|
tags: [brand, assets, tokens, templates, components, creative]
|
|
13
13
|
isPublic: true
|
|
14
|
+
# A LIBRARY: it produces nothing a home counts (homes).
|
|
15
|
+
intent:
|
|
16
|
+
label: Brand
|
|
14
17
|
|
|
15
18
|
workspace:
|
|
16
19
|
name: Brand Library
|
|
@@ -36,6 +39,16 @@ profiles:
|
|
|
36
39
|
color: amber
|
|
37
40
|
description: "Root brand context: positioning, audience, website, voice summary, and generation intent."
|
|
38
41
|
semanticSlug: brand.identity
|
|
42
|
+
# The ONE lifecycle (work model L1): every option's category.
|
|
43
|
+
lifecycle:
|
|
44
|
+
property: brand-status
|
|
45
|
+
options:
|
|
46
|
+
- { key: draft, category: open }
|
|
47
|
+
- { key: active, category: done }
|
|
48
|
+
- { key: archived, category: lost }
|
|
49
|
+
# How it renders (entity rendering, decision 8): @synap-core/types/presentation.
|
|
50
|
+
presentation:
|
|
51
|
+
family: document
|
|
39
52
|
properties:
|
|
40
53
|
- slug: brand-type
|
|
41
54
|
label: Brand type
|
|
@@ -58,6 +71,12 @@ profiles:
|
|
|
58
71
|
inputType: select
|
|
59
72
|
enumValues: [draft, active, archived]
|
|
60
73
|
constraints: { defaultValue: active }
|
|
74
|
+
- slug: default-brand
|
|
75
|
+
label: Default brand
|
|
76
|
+
description: Used when no project is selected.
|
|
77
|
+
valueType: boolean
|
|
78
|
+
inputType: checkbox
|
|
79
|
+
constraints: { defaultValue: false }
|
|
61
80
|
- slug: brand-tagline
|
|
62
81
|
label: Tagline
|
|
63
82
|
valueType: string
|
|
@@ -97,6 +116,13 @@ profiles:
|
|
|
97
116
|
color: violet
|
|
98
117
|
description: Approved palette entry with semantic role, usage notes, and print references.
|
|
99
118
|
semanticSlug: brand.color
|
|
119
|
+
# The ONE lifecycle (work model L1): the asset base without its review
|
|
120
|
+
# step (lifecycle-presets.ts). The compiler writes the options and the
|
|
121
|
+
# select's enumValues.
|
|
122
|
+
lifecycle:
|
|
123
|
+
property: color-status
|
|
124
|
+
adopts: asset
|
|
125
|
+
drop: [in-review]
|
|
100
126
|
properties:
|
|
101
127
|
- slug: color-role
|
|
102
128
|
label: Role
|
|
@@ -160,7 +186,6 @@ profiles:
|
|
|
160
186
|
label: Status
|
|
161
187
|
valueType: string
|
|
162
188
|
inputType: select
|
|
163
|
-
enumValues: [draft, approved, deprecated]
|
|
164
189
|
constraints: { defaultValue: approved }
|
|
165
190
|
|
|
166
191
|
- slug: brand-font
|
|
@@ -169,6 +194,18 @@ profiles:
|
|
|
169
194
|
color: blue
|
|
170
195
|
description: Typeface with role, family, licensing, import URL, weights, and fallback stack.
|
|
171
196
|
semanticSlug: brand.font
|
|
197
|
+
# The ONE lifecycle (work model L1): every option's category.
|
|
198
|
+
lifecycle:
|
|
199
|
+
property: font-status
|
|
200
|
+
options:
|
|
201
|
+
- { key: active, category: done }
|
|
202
|
+
- { key: draft, category: open }
|
|
203
|
+
- { key: deprecated, category: lost }
|
|
204
|
+
# How it renders (entity rendering, decision 8): @synap-core/types/presentation.
|
|
205
|
+
presentation:
|
|
206
|
+
family: media
|
|
207
|
+
media:
|
|
208
|
+
source: { property: font-document-id }
|
|
172
209
|
properties:
|
|
173
210
|
- slug: font-role
|
|
174
211
|
label: Role
|
|
@@ -220,6 +257,23 @@ profiles:
|
|
|
220
257
|
color: green
|
|
221
258
|
description: "Document-backed or URL-backed reusable media: logos, imagery, icons, fonts, video, references, and documents."
|
|
222
259
|
semanticSlug: brand.asset
|
|
260
|
+
# The ONE lifecycle (work model L1): the asset base without its review
|
|
261
|
+
# step; deprecating an asset is a person's call (lifecycle-presets.ts).
|
|
262
|
+
lifecycle:
|
|
263
|
+
property: asset-status
|
|
264
|
+
adopts: asset
|
|
265
|
+
drop: [in-review]
|
|
266
|
+
humanOnly: { deprecated: true }
|
|
267
|
+
# How it renders (entity rendering, decision 8): @synap-core/types/presentation.
|
|
268
|
+
# The picture: an upload (asset-document-id — both upload doors write it),
|
|
269
|
+
# else an external URL (asset-url — add-by-URL, the edit form): a link
|
|
270
|
+
# until the pod copies it, never a hot-linked image.
|
|
271
|
+
presentation:
|
|
272
|
+
family: media
|
|
273
|
+
media:
|
|
274
|
+
source: { property: asset-document-id }
|
|
275
|
+
fallbacks:
|
|
276
|
+
- { property: asset-url }
|
|
223
277
|
properties:
|
|
224
278
|
- slug: asset-kind
|
|
225
279
|
label: Kind
|
|
@@ -236,7 +290,9 @@ profiles:
|
|
|
236
290
|
icon-set,
|
|
237
291
|
illustration,
|
|
238
292
|
photo,
|
|
293
|
+
image,
|
|
239
294
|
video,
|
|
295
|
+
audio,
|
|
240
296
|
document,
|
|
241
297
|
font,
|
|
242
298
|
3d-model,
|
|
@@ -267,12 +323,68 @@ profiles:
|
|
|
267
323
|
label: Status
|
|
268
324
|
valueType: string
|
|
269
325
|
inputType: select
|
|
270
|
-
|
|
271
|
-
|
|
326
|
+
constraints: { defaultValue: draft }
|
|
327
|
+
- slug: asset-style
|
|
328
|
+
label: Style
|
|
329
|
+
valueType: string
|
|
330
|
+
inputType: select
|
|
331
|
+
enumValues: [on-white, on-dark, organic, editorial, technical, generative, cinematic, playful, bold, other]
|
|
272
332
|
- slug: asset-usage
|
|
273
333
|
label: Usage notes
|
|
274
334
|
valueType: string
|
|
275
335
|
inputType: textarea
|
|
336
|
+
# ── Inspiration → variation → Canva loop ──────────────────────────────
|
|
337
|
+
# An inspiration is an asset like any other: it keeps WHERE it came from
|
|
338
|
+
# and, when it is AI-made, the prompt that produced it — so any AI that
|
|
339
|
+
# reads the library can ask for "another version" without guessing.
|
|
340
|
+
- slug: asset-role
|
|
341
|
+
label: Role
|
|
342
|
+
description: Where this sits in the loop. Inspiration = something we admire; working = a draft we are iterating; final = approved output.
|
|
343
|
+
valueType: string
|
|
344
|
+
inputType: select
|
|
345
|
+
enumValues: [inspiration, working, final]
|
|
346
|
+
- slug: asset-origin
|
|
347
|
+
label: Made by
|
|
348
|
+
description: Who made it. Say unknown rather than guess.
|
|
349
|
+
valueType: string
|
|
350
|
+
inputType: select
|
|
351
|
+
enumValues: [human, ai-generated, mixed, unknown]
|
|
352
|
+
- slug: asset-source-url
|
|
353
|
+
label: Found at
|
|
354
|
+
description: The page or post where we found it (provenance). The file itself goes in External URL or Document ID.
|
|
355
|
+
valueType: string
|
|
356
|
+
inputType: url
|
|
357
|
+
- slug: asset-generator
|
|
358
|
+
label: Generator
|
|
359
|
+
description: AI model or tool that made it (e.g. Midjourney, Flux, GPT Image). Only if known.
|
|
360
|
+
valueType: string
|
|
361
|
+
inputType: text
|
|
362
|
+
- slug: asset-prompt
|
|
363
|
+
label: Prompt
|
|
364
|
+
description: The exact prompt behind an AI-made image, verbatim. Never reconstruct or paraphrase one.
|
|
365
|
+
valueType: string
|
|
366
|
+
inputType: textarea
|
|
367
|
+
- slug: asset-prompt-status
|
|
368
|
+
label: Prompt status
|
|
369
|
+
description: Lets an AI tell "no prompt" from "prompt not found yet".
|
|
370
|
+
valueType: string
|
|
371
|
+
inputType: select
|
|
372
|
+
enumValues: [known, not-found, not-applicable]
|
|
373
|
+
- slug: asset-generation-params
|
|
374
|
+
label: Generation settings
|
|
375
|
+
description: Seed, aspect ratio, negative prompt, reference images, model version — whatever is needed to reproduce it.
|
|
376
|
+
valueType: string
|
|
377
|
+
inputType: textarea
|
|
378
|
+
- slug: asset-canva-id
|
|
379
|
+
label: Canva ID
|
|
380
|
+
description: Canva asset or design ID once this has been sent to Canva.
|
|
381
|
+
valueType: string
|
|
382
|
+
inputType: text
|
|
383
|
+
- slug: asset-canva-url
|
|
384
|
+
label: Canva link
|
|
385
|
+
description: Edit link of the Canva design or asset.
|
|
386
|
+
valueType: string
|
|
387
|
+
inputType: url
|
|
276
388
|
- slug: asset-tags
|
|
277
389
|
label: Tags
|
|
278
390
|
valueType: string
|
|
@@ -300,6 +412,18 @@ profiles:
|
|
|
300
412
|
color: teal
|
|
301
413
|
description: Website, competitor, campaign, moodboard, or example used as source context for generation.
|
|
302
414
|
semanticSlug: brand.reference
|
|
415
|
+
# The ONE lifecycle (work model L1): the asset base (lifecycle-presets.ts).
|
|
416
|
+
# Its review step is `studied` (2026-10-12): the takeaways are written, a
|
|
417
|
+
# person has not approved it as a source yet.
|
|
418
|
+
lifecycle:
|
|
419
|
+
property: reference-status
|
|
420
|
+
adopts: asset
|
|
421
|
+
rename: { in-review: studied, deprecated: archived }
|
|
422
|
+
# How it renders (entity rendering, decision 8): @synap-core/types/presentation.
|
|
423
|
+
presentation:
|
|
424
|
+
family: link
|
|
425
|
+
media:
|
|
426
|
+
source: { property: reference-url }
|
|
303
427
|
properties:
|
|
304
428
|
- slug: reference-kind
|
|
305
429
|
label: Kind
|
|
@@ -328,8 +452,29 @@ profiles:
|
|
|
328
452
|
label: Status
|
|
329
453
|
valueType: string
|
|
330
454
|
inputType: select
|
|
331
|
-
|
|
332
|
-
|
|
455
|
+
constraints: { defaultValue: draft }
|
|
456
|
+
- slug: reference-style
|
|
457
|
+
label: Style
|
|
458
|
+
valueType: string
|
|
459
|
+
inputType: select
|
|
460
|
+
enumValues: [on-white, on-dark, organic, editorial, technical, generative, cinematic, playful, bold, other]
|
|
461
|
+
# What a study of the reference keeps. Content guidelines are distilled
|
|
462
|
+
# from these (guideline → reference, `derived_from`).
|
|
463
|
+
- slug: reference-takeaways
|
|
464
|
+
label: What to take
|
|
465
|
+
description: What to borrow from it — layout, elements, voice, pacing.
|
|
466
|
+
valueType: string
|
|
467
|
+
inputType: textarea
|
|
468
|
+
- slug: reference-avoid
|
|
469
|
+
label: What to avoid
|
|
470
|
+
valueType: string
|
|
471
|
+
inputType: textarea
|
|
472
|
+
- slug: reference-formats
|
|
473
|
+
label: Formats
|
|
474
|
+
description: The content formats this reference is an example of.
|
|
475
|
+
valueType: array
|
|
476
|
+
inputType: select
|
|
477
|
+
enumValues: [carousel, deck, video-motion, video-face, image, text]
|
|
333
478
|
|
|
334
479
|
- slug: brand-token-set
|
|
335
480
|
displayName: Token Set
|
|
@@ -337,6 +482,13 @@ profiles:
|
|
|
337
482
|
color: violet
|
|
338
483
|
description: Generated or curated design tokens for color, typography, spacing, radii, and exported CSS variables.
|
|
339
484
|
semanticSlug: brand.tokens
|
|
485
|
+
# The ONE lifecycle (work model L1): every option's category.
|
|
486
|
+
lifecycle:
|
|
487
|
+
property: token-status
|
|
488
|
+
options:
|
|
489
|
+
- { key: draft, category: open }
|
|
490
|
+
- { key: active, category: done }
|
|
491
|
+
- { key: archived, category: lost }
|
|
340
492
|
properties:
|
|
341
493
|
- slug: token-status
|
|
342
494
|
label: Status
|
|
@@ -373,6 +525,13 @@ profiles:
|
|
|
373
525
|
color: orange
|
|
374
526
|
description: "Generated or curated voice guidance by context: traits, tone, vocabulary, and copy examples."
|
|
375
527
|
semanticSlug: brand.voice
|
|
528
|
+
# The ONE lifecycle (work model L1): every option's category.
|
|
529
|
+
lifecycle:
|
|
530
|
+
property: voice-status
|
|
531
|
+
options:
|
|
532
|
+
- { key: draft, category: open }
|
|
533
|
+
- { key: approved, category: done }
|
|
534
|
+
- { key: deprecated, category: lost, humanOnly: true }
|
|
376
535
|
properties:
|
|
377
536
|
- slug: voice-context
|
|
378
537
|
label: Context
|
|
@@ -395,7 +554,9 @@ profiles:
|
|
|
395
554
|
valueType: string
|
|
396
555
|
inputType: select
|
|
397
556
|
enumValues: [draft, approved, deprecated]
|
|
398
|
-
|
|
557
|
+
# A new guide is a draft until a person approves it (founder decision
|
|
558
|
+
# 2026-10-12): content is only checked against an approved voice.
|
|
559
|
+
constraints: { defaultValue: draft }
|
|
399
560
|
- slug: voice-personality-traits
|
|
400
561
|
label: Personality
|
|
401
562
|
valueType: string
|
|
@@ -483,30 +644,55 @@ profiles:
|
|
|
483
644
|
valueType: string
|
|
484
645
|
inputType: textarea
|
|
485
646
|
|
|
647
|
+
# `scope: shared` — the ONE pod-wide template kind (plan D6): Content OS
|
|
648
|
+
# re-declares it to get the grant, instead of owning a `content-template`
|
|
649
|
+
# twin (retired by the w11.content.template-* manifest ops). Shares the
|
|
650
|
+
# DEFINITION, not the entities — no `entityScope: pod`, so each brand
|
|
651
|
+
# workspace's templates stay its own.
|
|
486
652
|
- slug: brand-template
|
|
487
653
|
displayName: Brand Template
|
|
488
654
|
icon: layout-template
|
|
489
655
|
color: pink
|
|
490
|
-
description: Reusable output template for artboards, decks, carousels, banners, documents, or generated HTML.
|
|
656
|
+
description: Reusable output template for artboards, decks, carousels, banners, documents, video, or generated HTML.
|
|
491
657
|
semanticSlug: brand.template
|
|
658
|
+
scope: shared
|
|
659
|
+
# The ONE lifecycle (work model L1): every option's category.
|
|
660
|
+
lifecycle:
|
|
661
|
+
property: template-status
|
|
662
|
+
options:
|
|
663
|
+
- { key: draft, category: open }
|
|
664
|
+
- { key: approved, category: done }
|
|
665
|
+
- { key: deprecated, category: lost }
|
|
666
|
+
# How it renders (entity rendering, decision 8): @synap-core/types/presentation.
|
|
667
|
+
presentation:
|
|
668
|
+
family: document
|
|
492
669
|
properties:
|
|
493
670
|
- slug: template-kind
|
|
494
671
|
label: Kind
|
|
495
672
|
valueType: string
|
|
496
673
|
inputType: select
|
|
497
674
|
enumValues:
|
|
498
|
-
[artboard, deck, carousel, banner, document, html, social, other]
|
|
675
|
+
[artboard, deck, carousel, banner, document, html, social, video, other]
|
|
499
676
|
- slug: template-status
|
|
500
677
|
label: Status
|
|
501
678
|
valueType: string
|
|
502
679
|
inputType: select
|
|
503
680
|
enumValues: [draft, approved, deprecated]
|
|
504
|
-
constraints: { defaultValue:
|
|
681
|
+
constraints: { defaultValue: draft }
|
|
682
|
+
- slug: template-style
|
|
683
|
+
label: Style
|
|
684
|
+
valueType: string
|
|
685
|
+
inputType: select
|
|
686
|
+
enumValues: [on-white, on-dark, organic, editorial, technical, generative, cinematic, playful, bold, other]
|
|
687
|
+
# `layered` = a carousel / image built as a layered composition in the
|
|
688
|
+
# pod, `open-design` = a deck or PDF document built in Open Design: the
|
|
689
|
+
# words content-os `render-engine` uses (static edit loop, founder D1,
|
|
690
|
+
# 2 Nov 2026). Additive only: the reconciler never drops a value.
|
|
505
691
|
- slug: template-format
|
|
506
692
|
label: Format
|
|
507
693
|
valueType: string
|
|
508
694
|
inputType: select
|
|
509
|
-
enumValues: [tldraw, html, json, markdown, image, mixed]
|
|
695
|
+
enumValues: [tldraw, html, json, markdown, image, mixed, hyperframes, layered, open-design]
|
|
510
696
|
- slug: template-config
|
|
511
697
|
label: Config JSON
|
|
512
698
|
valueType: string
|
|
@@ -515,6 +701,32 @@ profiles:
|
|
|
515
701
|
label: Usage notes
|
|
516
702
|
valueType: string
|
|
517
703
|
inputType: textarea
|
|
704
|
+
# ── Folded in from content-studio's `production-recipe` (decision D2,
|
|
705
|
+
# 2026-10-12): a recipe was a template with a platform and a script. Same
|
|
706
|
+
# values as recipe-platform / recipe-mode / recipe-script / recipe-stages.
|
|
707
|
+
- slug: template-platform
|
|
708
|
+
label: Platform
|
|
709
|
+
valueType: string
|
|
710
|
+
inputType: select
|
|
711
|
+
enumValues: [instagram, tiktok, youtube, linkedin, x, all]
|
|
712
|
+
- slug: template-mode
|
|
713
|
+
label: Render mode
|
|
714
|
+
valueType: string
|
|
715
|
+
inputType: select
|
|
716
|
+
enumValues: [fast, quality, data]
|
|
717
|
+
- slug: template-script
|
|
718
|
+
label: Script
|
|
719
|
+
valueType: string
|
|
720
|
+
inputType: textarea
|
|
721
|
+
- slug: template-stages
|
|
722
|
+
label: Stages
|
|
723
|
+
valueType: string
|
|
724
|
+
inputType: textarea
|
|
725
|
+
- slug: template-slots
|
|
726
|
+
label: Slots JSON
|
|
727
|
+
description: 'What a piece made from this template fills in: [{"slot", "component", "need": required|recommended|optional, "where"}].'
|
|
728
|
+
valueType: string
|
|
729
|
+
inputType: textarea
|
|
518
730
|
|
|
519
731
|
- slug: brand-component
|
|
520
732
|
displayName: Brand Component
|
|
@@ -522,6 +734,13 @@ profiles:
|
|
|
522
734
|
color: green
|
|
523
735
|
description: "Reusable branded UI or content component: hero, CTA, card, quote, banner, section, or HTML snippet."
|
|
524
736
|
semanticSlug: brand.component
|
|
737
|
+
# The ONE lifecycle (work model L1): every option's category.
|
|
738
|
+
lifecycle:
|
|
739
|
+
property: component-status
|
|
740
|
+
options:
|
|
741
|
+
- { key: draft, category: open }
|
|
742
|
+
- { key: approved, category: done }
|
|
743
|
+
- { key: deprecated, category: lost }
|
|
525
744
|
properties:
|
|
526
745
|
- slug: component-kind
|
|
527
746
|
label: Kind
|
|
@@ -548,6 +767,57 @@ profiles:
|
|
|
548
767
|
valueType: string
|
|
549
768
|
inputType: textarea
|
|
550
769
|
|
|
770
|
+
# How this brand makes content, distilled from approved references (decision
|
|
771
|
+
# D3, 2026-10-12). `base` = holds for everything; `format` = one format
|
|
772
|
+
# (carousel, video…); `frame` = the structure for one goal (sell, tutorial…).
|
|
773
|
+
# The long body is the entity's document. Workspace-scoped like brand-rule and
|
|
774
|
+
# brand-voice-guide: other spaces READ it through the pod-visible Brand space.
|
|
775
|
+
- slug: content-guideline
|
|
776
|
+
displayName: Content Guideline
|
|
777
|
+
icon: book-open-check
|
|
778
|
+
color: amber
|
|
779
|
+
description: "How this brand makes content: a base guideline, a format guideline, or the frame for one goal — distilled from approved references."
|
|
780
|
+
semanticSlug: brand.content-guideline
|
|
781
|
+
# The ONE lifecycle (work model L1): every option's category.
|
|
782
|
+
lifecycle:
|
|
783
|
+
property: guideline-status
|
|
784
|
+
options:
|
|
785
|
+
- { key: draft, category: open }
|
|
786
|
+
- { key: approved, category: done }
|
|
787
|
+
- { key: deprecated, category: lost, humanOnly: true }
|
|
788
|
+
# How it renders (entity rendering, decision 8): @synap-core/types/presentation.
|
|
789
|
+
presentation:
|
|
790
|
+
family: document
|
|
791
|
+
properties:
|
|
792
|
+
- slug: guideline-type
|
|
793
|
+
label: Type
|
|
794
|
+
valueType: string
|
|
795
|
+
inputType: select
|
|
796
|
+
enumValues: [base, format, frame]
|
|
797
|
+
constraints: { defaultValue: base }
|
|
798
|
+
- slug: guideline-format
|
|
799
|
+
label: Format
|
|
800
|
+
valueType: string
|
|
801
|
+
inputType: select
|
|
802
|
+
enumValues: [any, carousel, deck, video-motion, video-face, image, text, thread, newsletter]
|
|
803
|
+
constraints: { defaultValue: any }
|
|
804
|
+
- slug: guideline-goal
|
|
805
|
+
label: Goal
|
|
806
|
+
description: Only for a frame guideline — the goal this structure serves.
|
|
807
|
+
valueType: string
|
|
808
|
+
inputType: select
|
|
809
|
+
enumValues: [sell, hot-take, tutorial, product-demo, announcement, proof, behind-the-scenes, community]
|
|
810
|
+
- slug: guideline-status
|
|
811
|
+
label: Status
|
|
812
|
+
valueType: string
|
|
813
|
+
inputType: select
|
|
814
|
+
enumValues: [draft, approved, deprecated]
|
|
815
|
+
constraints: { defaultValue: draft }
|
|
816
|
+
- slug: guideline-summary
|
|
817
|
+
label: Summary
|
|
818
|
+
valueType: string
|
|
819
|
+
inputType: textarea
|
|
820
|
+
|
|
551
821
|
views:
|
|
552
822
|
- name: Brand Identity
|
|
553
823
|
slug: brand-identities
|
|
@@ -600,6 +870,11 @@ views:
|
|
|
600
870
|
type: grid
|
|
601
871
|
scopeProfileSlug: brand-component
|
|
602
872
|
description: Reusable branded blocks and snippets.
|
|
873
|
+
- name: Content Guidelines
|
|
874
|
+
slug: content-guidelines
|
|
875
|
+
type: list
|
|
876
|
+
scopeProfileSlug: content-guideline
|
|
877
|
+
description: Base, format and goal-frame guidelines for making content.
|
|
603
878
|
|
|
604
879
|
entityLinks:
|
|
605
880
|
- sourceProfileSlug: brand-token-set
|
|
@@ -614,13 +889,45 @@ entityLinks:
|
|
|
614
889
|
targetProfileSlug: brand-asset
|
|
615
890
|
type: references
|
|
616
891
|
label: References asset
|
|
892
|
+
# A variation points at the asset it was made from (child → parent). Same
|
|
893
|
+
# edge for "AI version of an inspiration" and "Canva export of a draft".
|
|
894
|
+
- sourceProfileSlug: brand-asset
|
|
895
|
+
targetProfileSlug: brand-asset
|
|
896
|
+
type: derived_from
|
|
897
|
+
label: Variation of
|
|
898
|
+
- sourceProfileSlug: brand-asset
|
|
899
|
+
targetProfileSlug: brand-reference
|
|
900
|
+
type: references
|
|
901
|
+
label: Found in reference
|
|
617
902
|
- sourceProfileSlug: brand-template
|
|
618
903
|
targetProfileSlug: brand-token-set
|
|
619
904
|
type: uses
|
|
620
905
|
label: Uses token set
|
|
906
|
+
- sourceProfileSlug: content-guideline
|
|
907
|
+
targetProfileSlug: brand-reference
|
|
908
|
+
type: derived_from
|
|
909
|
+
label: Distilled from
|
|
621
910
|
|
|
622
911
|
onboarding:
|
|
623
|
-
|
|
912
|
+
purpose: >-
|
|
913
|
+
The brand's source of truth. Before writing copy or generating an asset,
|
|
914
|
+
read the brand identity, the voice guides and the mandatory rules here;
|
|
915
|
+
store brand assets, colors, fonts and token sets as their own typed kinds,
|
|
916
|
+
never as generic files.
|
|
917
|
+
anchors:
|
|
918
|
+
- profileSlug: brand-identity
|
|
919
|
+
role: root
|
|
920
|
+
limit: 10
|
|
921
|
+
- profileSlug: brand-rule
|
|
922
|
+
role: context
|
|
923
|
+
limit: 10
|
|
924
|
+
- profileSlug: brand-voice-guide
|
|
925
|
+
role: context
|
|
926
|
+
limit: 3
|
|
927
|
+
- profileSlug: content-guideline
|
|
928
|
+
role: context
|
|
929
|
+
limit: 5
|
|
930
|
+
goal: One brand identity per project, filed into that project (the Brand space is shared; the project picks the brand). Capture each brand's expressive DNA — voice, visual identity, and the rules that keep everything on-brand — so any human or AI can generate on-brand content and assets.
|
|
624
931
|
framing: >
|
|
625
932
|
THE BRAND STRATEGIST: Act as a seasoned brand strategist. Draw out how the
|
|
626
933
|
brand sounds (tone, personality, do's and don'ts), how it looks (identity,
|
|
@@ -629,6 +936,11 @@ onboarding:
|
|
|
629
936
|
positioning) so the brand expresses the strategy, never contradicts it.
|
|
630
937
|
expertise:
|
|
631
938
|
starters:
|
|
939
|
+
- >
|
|
940
|
+
A post that sells follows a frame, not a pitch: Story (a real moment),
|
|
941
|
+
Example (what it looked like in practice), Lesson (what that taught),
|
|
942
|
+
Link (where to go next). Propose it as the brand's first frame guideline
|
|
943
|
+
for the `sell` goal, then test it on one real post before approving.
|
|
632
944
|
- >
|
|
633
945
|
Adjectives don't define a voice — "friendly, bold, human" describes every
|
|
634
946
|
brand and constrains none. Propose voice as a small set of DO / DON'T pairs
|
|
@@ -660,17 +972,25 @@ onboarding:
|
|
|
660
972
|
AA on text is off-brand the moment it's inaccessible. If they've picked
|
|
661
973
|
colors without checking text-on-surface contrast, flag it before it's
|
|
662
974
|
codified into tokens.
|
|
975
|
+
- >
|
|
976
|
+
Inspiration without distillation. A wall of saved references teaches an
|
|
977
|
+
AI nothing it can follow. Each reference only counts once its takeaways
|
|
978
|
+
and what to avoid are written down, and those become a guideline a person
|
|
979
|
+
approves. Until then it is a bookmark.
|
|
663
980
|
bar: >
|
|
664
981
|
A stranger handed the voice pairs, the color roles, and the rules could write a
|
|
665
982
|
new paragraph and pick a button color that both read unmistakably as THIS brand —
|
|
666
983
|
and every rule is testable on a real sentence or a real screen, not a vibe.
|
|
667
984
|
collect:
|
|
668
985
|
- profileSlug: brand-identity
|
|
669
|
-
what:
|
|
670
|
-
cardinality:
|
|
986
|
+
what: One brand identity per project — name, essence, and how it presents itself — filed into its project. Mark one as the default brand when several exist.
|
|
987
|
+
cardinality: few
|
|
988
|
+
min: 1
|
|
989
|
+
keyFields: [brand-positioning, brand-audience-primary]
|
|
671
990
|
- profileSlug: brand-voice-guide
|
|
672
991
|
what: Voice guides — tone, personality traits, vocabulary, and do/don't examples per context.
|
|
673
992
|
cardinality: few
|
|
993
|
+
min: 1
|
|
674
994
|
keyFields:
|
|
675
995
|
[
|
|
676
996
|
voice-personality-traits,
|
|
@@ -681,17 +1001,87 @@ onboarding:
|
|
|
681
1001
|
- profileSlug: brand-rule
|
|
682
1002
|
what: Usage rules and constraints (mandatory / important / guideline).
|
|
683
1003
|
cardinality: several
|
|
1004
|
+
min: 1
|
|
1005
|
+
keyFields: [rule-content]
|
|
684
1006
|
- profileSlug: brand-color
|
|
685
1007
|
what: The brand's core colors.
|
|
686
1008
|
cardinality: few
|
|
687
1009
|
- profileSlug: brand-font
|
|
688
1010
|
what: The brand's typefaces (heading / body / mono).
|
|
689
1011
|
cardinality: few
|
|
1012
|
+
- profileSlug: brand-reference
|
|
1013
|
+
what: At least three references a person has approved, each with what to take from it and what to avoid.
|
|
1014
|
+
cardinality: several
|
|
1015
|
+
min: 3
|
|
1016
|
+
keyFields: [reference-url, reference-takeaways, reference-avoid]
|
|
1017
|
+
- profileSlug: content-guideline
|
|
1018
|
+
what: An approved base guideline (how all of this brand's content is made), then a format or frame guideline when one is needed.
|
|
1019
|
+
cardinality: few
|
|
1020
|
+
min: 1
|
|
1021
|
+
keyFields: [guideline-type, guideline-summary]
|
|
1022
|
+
- profileSlug: brand-template
|
|
1023
|
+
what: At least one approved template for each format the brand publishes, with its slots.
|
|
1024
|
+
cardinality: few
|
|
1025
|
+
min: 1
|
|
1026
|
+
keyFields: [template-kind, template-slots]
|
|
690
1027
|
openingQuestions:
|
|
691
1028
|
- In three words, how should the brand sound?
|
|
692
1029
|
- What's one thing the brand must never say or do?
|
|
693
1030
|
- Who's the brand talking to (tie this back to your Foundation audience)?
|
|
694
|
-
doneWhen:
|
|
1031
|
+
doneWhen: >-
|
|
1032
|
+
Ready for content: a brand identity, an approved voice guide, the rules, at
|
|
1033
|
+
least three approved references, an approved base content guideline, and at
|
|
1034
|
+
least one approved template for each format the brand publishes.
|
|
1035
|
+
|
|
1036
|
+
rules:
|
|
1037
|
+
- key: brand-approved-assets-first
|
|
1038
|
+
intent: >-
|
|
1039
|
+
When generating brand content or an asset, use only APPROVED brand
|
|
1040
|
+
assets, references and templates plus the active token set; a draft is a
|
|
1041
|
+
candidate the user has not validated yet and never feeds generation.
|
|
1042
|
+
Match the piece's style to their Style field. Create new variants only
|
|
1043
|
+
when the user explicitly asks for exploration, and load the
|
|
1044
|
+
creative-director skill (linked to this space) to route the ask.
|
|
1045
|
+
- key: brand-read-before-generating
|
|
1046
|
+
intent: >-
|
|
1047
|
+
Before writing copy or generating an asset for this brand, read its brand
|
|
1048
|
+
identity, voice guides and mandatory brand rules in the Brand Library, and
|
|
1049
|
+
follow them.
|
|
1050
|
+
- key: brand-store-typed
|
|
1051
|
+
intent: >-
|
|
1052
|
+
Store brand material as its own Brand Library kind (brand-asset,
|
|
1053
|
+
brand-color, brand-font, brand-token-set, brand-rule, brand-reference,
|
|
1054
|
+
content-guideline), never as a generic file or note.
|
|
1055
|
+
|
|
1056
|
+
skills:
|
|
1057
|
+
# The space DECLARES what its work needs, so every AI here is told the skill
|
|
1058
|
+
# exists and finds it first — instead of the rule above having to ASK for it in
|
|
1059
|
+
# prose, which a model may or may not honour. `on-demand`: the Brand space is a
|
|
1060
|
+
# reference space, so the director loads when the work calls for it.
|
|
1061
|
+
#
|
|
1062
|
+
# A REF, not a copy: the skill itself ships as its own package
|
|
1063
|
+
# (`skills/creative-director.skill.json`), installed via the `dependencies`
|
|
1064
|
+
# block below. This is the LINK; that is the INSTALL.
|
|
1065
|
+
- slug: creative-director
|
|
1066
|
+
when: Any content ask about this brand — carousel, deck, video, text
|
|
1067
|
+
mode: on-demand
|
|
1068
|
+
- slug: content-taste
|
|
1069
|
+
when: Studying inspiration, writing content guidelines, building the asset kit
|
|
1070
|
+
mode: on-demand
|
|
1071
|
+
|
|
1072
|
+
dependencies:
|
|
1073
|
+
# Bottom-up authoring: the small standalone piece is published first, then the
|
|
1074
|
+
# spaces that need it declare it. Resolved BEFORE the skills linker runs
|
|
1075
|
+
# (dependencies are Step 0 of materialization; the linker runs post-workspace),
|
|
1076
|
+
# so a freshly installed skill links instead of reporting `unresolved`.
|
|
1077
|
+
- slug: creative-director
|
|
1078
|
+
kind: skill
|
|
1079
|
+
relation: require
|
|
1080
|
+
reason: "Routes every content ask to this brand's approved recipes, references and assets."
|
|
1081
|
+
- slug: content-taste
|
|
1082
|
+
kind: skill
|
|
1083
|
+
relation: require
|
|
1084
|
+
reason: "Turns references into approved guidelines and the asset kit content is made from."
|
|
695
1085
|
|
|
696
1086
|
app:
|
|
697
1087
|
kind: native
|
|
@@ -764,3 +1154,124 @@ bento:
|
|
|
764
1154
|
- kind: view
|
|
765
1155
|
viewName: Templates
|
|
766
1156
|
pos: { x: 6, y: 8, w: 6, h: 4 }
|
|
1157
|
+
|
|
1158
|
+
playbooks:
|
|
1159
|
+
- name: Make a brand asset
|
|
1160
|
+
description: Turn a request for a logo, image, icon or template into a draft built from the approved brand, and approve it with a person before anything uses it.
|
|
1161
|
+
goalTemplate: >-
|
|
1162
|
+
Make this brand asset ({asset}); each stage moves its status. DRAFT: read
|
|
1163
|
+
the request and the approved brand only — approved colours, fonts,
|
|
1164
|
+
references and the active token set; never a draft — and load the
|
|
1165
|
+
creative-director skill to pick the recipe. Make the draft (or up to
|
|
1166
|
+
three variants, each its own asset derived from this one) and record the
|
|
1167
|
+
generator, prompt and parameters on it. APPROVE: a person approves one
|
|
1168
|
+
draft as final; with variants, the approval asks them to `choose` one,
|
|
1169
|
+
your recommendation first, and that choice is the approval. Until then
|
|
1170
|
+
nothing may use it.
|
|
1171
|
+
Deprecating an asset is a person's call.
|
|
1172
|
+
subjectProfile:
|
|
1173
|
+
profileSlug: brand-asset
|
|
1174
|
+
statusProperty: asset-status
|
|
1175
|
+
humanOnlyStatuses: [deprecated]
|
|
1176
|
+
params:
|
|
1177
|
+
- { name: asset, type: entity, label: Brand asset, required: true }
|
|
1178
|
+
executor: is-agent
|
|
1179
|
+
status: active
|
|
1180
|
+
requiredIntents: [generate_media]
|
|
1181
|
+
expectedOutputs:
|
|
1182
|
+
- { kind: brand-asset, label: Variants, relationToSubject: derived_from }
|
|
1183
|
+
stages:
|
|
1184
|
+
- key: draft
|
|
1185
|
+
name: Draft
|
|
1186
|
+
category: started
|
|
1187
|
+
subjectStatus: draft
|
|
1188
|
+
goal: Build the draft from approved brand sources only and record how it was made.
|
|
1189
|
+
criteria:
|
|
1190
|
+
- key: asset-approved-sources
|
|
1191
|
+
statement: The draft was built only from approved colours, fonts, references and the active token set.
|
|
1192
|
+
check: { kind: judge }
|
|
1193
|
+
- key: asset-provenance
|
|
1194
|
+
statement: The asset records its generator, prompt and parameters, or says it was made by hand.
|
|
1195
|
+
check: { kind: judge }
|
|
1196
|
+
- key: approve
|
|
1197
|
+
name: Approve
|
|
1198
|
+
category: completed
|
|
1199
|
+
subjectStatus: approved
|
|
1200
|
+
goal: A person approves one draft as final; with variants, they choose one, recommended first.
|
|
1201
|
+
gate: { kind: human }
|
|
1202
|
+
onFail: { toStage: draft }
|
|
1203
|
+
|
|
1204
|
+
- name: Write the brand voice
|
|
1205
|
+
description: Draft or revise the brand voice guide from what the brand already publishes, and approve it with a person.
|
|
1206
|
+
goalTemplate: >-
|
|
1207
|
+
Write this brand voice guide ({guide}); each stage moves its status.
|
|
1208
|
+
DRAFT: read the brand identity, the approved assets and the last posts
|
|
1209
|
+
and emails the brand published; write the voice in a few traits, each
|
|
1210
|
+
with a do and a don't taken from real examples, and the words to use and
|
|
1211
|
+
avoid. APPROVE: a person approves the guide; then it is what every draft
|
|
1212
|
+
is checked against. Retiring a guide is a person's call.
|
|
1213
|
+
subjectProfile:
|
|
1214
|
+
profileSlug: brand-voice-guide
|
|
1215
|
+
statusProperty: voice-status
|
|
1216
|
+
humanOnlyStatuses: [deprecated]
|
|
1217
|
+
params:
|
|
1218
|
+
- { name: guide, type: entity, label: Brand voice guide, required: true }
|
|
1219
|
+
executor: is-agent
|
|
1220
|
+
status: active
|
|
1221
|
+
stages:
|
|
1222
|
+
- key: draft
|
|
1223
|
+
name: Draft
|
|
1224
|
+
category: started
|
|
1225
|
+
subjectStatus: draft
|
|
1226
|
+
goal: Write the voice traits with real do and don't examples, and the words to use and avoid.
|
|
1227
|
+
criteria:
|
|
1228
|
+
- key: voice-examples
|
|
1229
|
+
statement: Every voice trait has a do and a don't example taken from published material.
|
|
1230
|
+
check: { kind: judge }
|
|
1231
|
+
- key: approve
|
|
1232
|
+
name: Approve
|
|
1233
|
+
category: completed
|
|
1234
|
+
subjectStatus: approved
|
|
1235
|
+
goal: A person approves the guide.
|
|
1236
|
+
gate: { kind: human }
|
|
1237
|
+
onFail: { toStage: draft }
|
|
1238
|
+
|
|
1239
|
+
- name: Write a content guideline
|
|
1240
|
+
description: Distil approved references into a content guideline (base, format or the frame for one goal), and approve it with a person.
|
|
1241
|
+
goalTemplate: >-
|
|
1242
|
+
Write this content guideline ({guideline}); each stage moves its status.
|
|
1243
|
+
DRAFT: read the brand identity, the approved voice guide and the approved
|
|
1244
|
+
references; load the content-taste skill. Write what to take and what to
|
|
1245
|
+
avoid as rules a maker can follow, link the guideline to every reference
|
|
1246
|
+
it was distilled from, and fill the summary. For a frame guideline, set
|
|
1247
|
+
the goal and give the structure in order. APPROVE: a person approves the
|
|
1248
|
+
guideline; then content is made and checked against it. Retiring a
|
|
1249
|
+
guideline is a person's call.
|
|
1250
|
+
subjectProfile:
|
|
1251
|
+
profileSlug: content-guideline
|
|
1252
|
+
statusProperty: guideline-status
|
|
1253
|
+
humanOnlyStatuses: [deprecated]
|
|
1254
|
+
params:
|
|
1255
|
+
- { name: guideline, type: entity, label: Content guideline, required: true }
|
|
1256
|
+
executor: is-agent
|
|
1257
|
+
status: active
|
|
1258
|
+
stages:
|
|
1259
|
+
- key: draft
|
|
1260
|
+
name: Draft
|
|
1261
|
+
category: started
|
|
1262
|
+
subjectStatus: draft
|
|
1263
|
+
goal: Distil the approved references into rules a maker can follow, linked to their sources.
|
|
1264
|
+
criteria:
|
|
1265
|
+
- key: guideline-sources
|
|
1266
|
+
statement: The guideline is linked to at least one approved reference it was distilled from.
|
|
1267
|
+
check: { kind: judge }
|
|
1268
|
+
- key: guideline-followable
|
|
1269
|
+
statement: Every point says what to do or avoid concretely enough to check a draft against it.
|
|
1270
|
+
check: { kind: judge }
|
|
1271
|
+
- key: approve
|
|
1272
|
+
name: Approve
|
|
1273
|
+
category: completed
|
|
1274
|
+
subjectStatus: approved
|
|
1275
|
+
goal: A person approves the guideline.
|
|
1276
|
+
gate: { kind: human }
|
|
1277
|
+
onFail: { toStage: draft }
|