@synap-core/workspace-templates 0.5.0 → 0.6.1

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.
@@ -0,0 +1,246 @@
1
+ # Social workspace template — distribution & publishing domain.
2
+ # Plan, schedule, and publish across channels, then track how it performs: the
3
+ # channels you own, the posts going out, the schedule that paces them, and the
4
+ # engagement signals that come back. Consumes `content` + `marketing`,
5
+ # provides `social`. Validated against types.ts at build time.
6
+
7
+ meta:
8
+ slug: social
9
+ name: Social
10
+ description: "Plan, schedule, and publish across your channels — then track how each post performs. Channels, posts, schedules, and engagement signals, all connected."
11
+ icon: share-2
12
+ color: "#1D9BF0"
13
+ tags: [social, distribution, publishing, channels]
14
+ isPublic: true
15
+
16
+ workspace:
17
+ name: Social
18
+ description: "The distribution layer — the channels you publish on, the posts and schedules that pace them, and the engagement signals that tell you what's working."
19
+ subtype: social
20
+ visibility: pod_visible
21
+ capabilities:
22
+ - social.channels
23
+ - social.publishing
24
+ - social.signals
25
+ sourceRoles:
26
+ content: consumer
27
+ marketing: consumer
28
+ social: provider
29
+
30
+ profiles:
31
+ - slug: channel
32
+ displayName: Channel
33
+ icon: radio
34
+ color: "#1D9BF0"
35
+ description: "A social account you publish on — a platform, a handle, and its audience."
36
+ properties:
37
+ - slug: platform
38
+ label: Platform
39
+ valueType: string
40
+ inputType: select
41
+ enumValues: [x, linkedin, instagram, tiktok, youtube, facebook, threads, other]
42
+ - slug: handle
43
+ label: Handle
44
+ valueType: string
45
+ inputType: text
46
+ - slug: channel-url
47
+ label: URL
48
+ valueType: string
49
+ inputType: url
50
+ - slug: follower-count
51
+ label: Followers
52
+ valueType: number
53
+ inputType: number
54
+ - slug: channel-status
55
+ label: Status
56
+ valueType: string
57
+ inputType: select
58
+ enumValues: [active, paused, archived]
59
+ constraints: { defaultValue: active }
60
+
61
+ - slug: social-post
62
+ displayName: Post
63
+ icon: send
64
+ color: "#0EA5E9"
65
+ description: "A single piece going out on a channel — its content, its schedule, and where it landed."
66
+ properties:
67
+ - slug: post-status
68
+ label: Status
69
+ valueType: string
70
+ inputType: select
71
+ enumValues: [draft, scheduled, published, failed]
72
+ constraints: { defaultValue: draft }
73
+ - slug: post-channel
74
+ label: Channel
75
+ valueType: entity_id
76
+ targetProfileSlug: channel
77
+ inputType: entity_select
78
+ - slug: post-content
79
+ label: Content
80
+ valueType: string
81
+ inputType: textarea
82
+ - slug: scheduled-at
83
+ label: Scheduled For
84
+ valueType: date
85
+ inputType: date
86
+ - slug: published-at
87
+ label: Published At
88
+ valueType: date
89
+ inputType: date
90
+ - slug: post-url
91
+ label: Post URL
92
+ valueType: string
93
+ inputType: url
94
+ - slug: post-notes
95
+ label: Notes
96
+ valueType: string
97
+ inputType: textarea
98
+
99
+ - slug: post-schedule
100
+ displayName: Schedule
101
+ icon: calendar-clock
102
+ color: "#8B5CF6"
103
+ description: "A recurring cadence for a channel — the slot pattern that keeps posting consistent."
104
+ properties:
105
+ - slug: schedule-channel
106
+ label: Channel
107
+ valueType: entity_id
108
+ targetProfileSlug: channel
109
+ inputType: entity_select
110
+ - slug: cadence
111
+ label: Cadence
112
+ valueType: string
113
+ inputType: select
114
+ enumValues: [daily, weekly, biweekly, monthly, adhoc]
115
+ - slug: slot-time
116
+ label: Slot Time
117
+ valueType: string
118
+ inputType: text
119
+ - slug: schedule-notes
120
+ label: Notes
121
+ valueType: string
122
+ inputType: textarea
123
+
124
+ - slug: engagement-signal
125
+ displayName: Signal
126
+ icon: activity
127
+ color: "#10B981"
128
+ description: "A performance reading for a channel over a period — reach, impressions, and the reactions that came back."
129
+ properties:
130
+ - slug: signal-channel
131
+ label: Channel
132
+ valueType: entity_id
133
+ targetProfileSlug: channel
134
+ inputType: entity_select
135
+ - slug: reach
136
+ label: Reach
137
+ valueType: number
138
+ inputType: number
139
+ - slug: impressions
140
+ label: Impressions
141
+ valueType: number
142
+ inputType: number
143
+ - slug: likes
144
+ label: Likes
145
+ valueType: number
146
+ inputType: number
147
+ - slug: comments
148
+ label: Comments
149
+ valueType: number
150
+ inputType: number
151
+ - slug: shares
152
+ label: Shares
153
+ valueType: number
154
+ inputType: number
155
+ - slug: ctr
156
+ label: "CTR (%)"
157
+ valueType: number
158
+ inputType: number
159
+ - slug: signal-period
160
+ label: Period
161
+ valueType: string
162
+ inputType: text
163
+ - slug: captured-at
164
+ label: Captured At
165
+ valueType: date
166
+ inputType: date
167
+
168
+ # CURATED views — the distribution motion, not one per profile
169
+ views:
170
+ - name: Content Calendar
171
+ slug: content-calendar
172
+ type: kanban
173
+ scopeProfileSlug: social-post
174
+ groupBy: post-status
175
+ description: "Posts on a board by status — draft to published."
176
+ - name: Channels
177
+ slug: channels
178
+ type: table
179
+ scopeProfileSlug: channel
180
+ description: "The channels you publish on, with platform, handle, and audience."
181
+ - name: Signals
182
+ slug: signals
183
+ type: table
184
+ scopeProfileSlug: engagement-signal
185
+ description: "Engagement readings by channel and period."
186
+
187
+ onboarding:
188
+ goal: >
189
+ Capture the real distribution motion — which channels you actually publish
190
+ on, what's scheduled to go out, and how it performs — so the workspace
191
+ mirrors how your audience gets reached, not a generic content plan.
192
+ framing: >
193
+ THE SOCIAL LEAD: Act as a sharp distribution lead. Anchor every post to a
194
+ real Content asset or a Marketing brief — social is the distribution arm, not
195
+ a separate content factory. Push for one channel done genuinely well over
196
+ spraying thin across five. Refuse "we post everywhere" — ask which channel
197
+ actually earns attention, and what the real cadence is.
198
+ collect:
199
+ - profileSlug: channel
200
+ what: The channels you actually publish on — one per real account, with its platform and handle.
201
+ cardinality: few
202
+ keyFields: [platform, handle]
203
+ - profileSlug: social-post
204
+ what: The posts in motion — drafts, scheduled, and recently published — each tied to its channel.
205
+ cardinality: several
206
+ keyFields: [post-status, post-channel]
207
+ openingQuestions:
208
+ - "Which channels are you actually active on right now, and which one earns the most attention?"
209
+ - "What's your posting cadence per channel — daily, weekly, ad-hoc?"
210
+ - "What's scheduled to go out next, and where does your content usually come from?"
211
+ doneWhen: at least one channel with a scheduled or published post.
212
+
213
+ # App reference — no custom app for social
214
+ app:
215
+ kind: stored
216
+ cellKey: entity-detail
217
+
218
+ # Layout config for browser sidebar
219
+ layout:
220
+ pinnedApps: [dashboard, data]
221
+ defaultView: Content Calendar
222
+ defaultApp: null
223
+ sidebarItems:
224
+ - kind: view
225
+ viewName: Content Calendar
226
+ label: Content Calendar
227
+ icon: calendar-clock
228
+ - kind: view
229
+ viewName: Channels
230
+ label: Channels
231
+ icon: radio
232
+ - kind: view
233
+ viewName: Signals
234
+ label: Signals
235
+ icon: activity
236
+
237
+ # Bento dashboard
238
+ bento:
239
+ viewName: Content Calendar
240
+ blocks:
241
+ - kind: view
242
+ viewName: Channels
243
+ pos: { x: 0, y: 0, w: 6, h: 5 }
244
+ - kind: view
245
+ viewName: Signals
246
+ pos: { x: 6, y: 0, w: 6, h: 5 }