@synap-core/workspace-templates 0.12.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 +174 -900
- package/dist/index.js +26148 -23931
- 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 +27 -4
- 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.yaml +85 -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 +779 -91
- 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 +296 -49
- package/src/catalog-safety.test.ts +198 -0
- package/src/catalog.template-items.test.ts +75 -0
- package/src/catalog.ts +66 -2
- 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/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 +78 -38
- 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 +46 -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 +51 -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 +1 -6
- package/src/send-message-maps.test.ts +227 -0
- package/src/shared-role-ssot.test.ts +40 -2
- 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 +20851 -21496
- 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 +22 -2
- package/src/validate-onboarding.test.ts +59 -0
- package/src/validate.test.ts +71 -4
- package/src/validate.ts +1335 -7
- package/src/wire-core.ts +231 -0
- package/src/wire.test.ts +159 -0
- package/src/wire.ts +107 -0
- 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/builder.yaml
CHANGED
|
@@ -16,16 +16,44 @@
|
|
|
16
16
|
meta:
|
|
17
17
|
slug: builder-workspace
|
|
18
18
|
domain: build
|
|
19
|
-
name:
|
|
20
|
-
description: "
|
|
19
|
+
name: Dev
|
|
20
|
+
description: "Dev workspace — apps, features, services, packages, environments, deployments, recipes, decisions, incidents, plus delegated agent tasks/skills/providers."
|
|
21
21
|
icon: wrench
|
|
22
22
|
color: "#7C3AED"
|
|
23
23
|
tags: [builder, developer, agents]
|
|
24
24
|
isPublic: true
|
|
25
|
+
# Onboarding start (meta.start): the "product and dev" card.
|
|
26
|
+
start:
|
|
27
|
+
order: 1
|
|
28
|
+
label: Product and dev
|
|
29
|
+
promise: Everything your agents are building, from backlog to done.
|
|
30
|
+
suggestFor: [developer]
|
|
31
|
+
profile: task
|
|
32
|
+
views: [task-board]
|
|
33
|
+
example:
|
|
34
|
+
- { title: "Add Stripe checkout", values: { task-status: Running, task-priority: High, task-type: Code } }
|
|
35
|
+
- { title: "Research competitor pricing", values: { task-status: Queued, task-priority: Medium, task-type: Research } }
|
|
36
|
+
- { title: "Fix login redirect loop", values: { task-status: Review, task-priority: Critical, task-type: Code } }
|
|
37
|
+
- { title: "Write the launch changelog", values: { task-status: Backlog, task-priority: Low, task-type: Content } }
|
|
38
|
+
- { title: "Ship v0.2 to staging", values: { task-status: Done, task-priority: High, task-type: Ops } }
|
|
39
|
+
firstSession:
|
|
40
|
+
title: Your live tasks
|
|
41
|
+
goal: "Add the 3 to 5 pieces of product work you or your agents are doing now, each with a status and a priority."
|
|
42
|
+
starters:
|
|
43
|
+
- "I am building a SaaS app with a small team"
|
|
44
|
+
- "I want my coding agents to pick up tasks from a board"
|
|
45
|
+
- "I am shipping a side project on weekends"
|
|
46
|
+
# What this space PRODUCES (homes): the purpose word, then its kinds/roles.
|
|
47
|
+
intent:
|
|
48
|
+
label: Product
|
|
49
|
+
produces:
|
|
50
|
+
- profile: devplane_feature
|
|
51
|
+
- profile: devplane_story
|
|
52
|
+
- profile: ui-design
|
|
25
53
|
|
|
26
54
|
workspace:
|
|
27
|
-
name:
|
|
28
|
-
description: "Developer + agent intelligence layer. Combines the DevPlane developer schema (apps, packages, services, environments, deployments, recipes, decisions, incidents) with the
|
|
55
|
+
name: Dev
|
|
56
|
+
description: "Developer + agent intelligence layer. Combines the DevPlane developer schema (apps, packages, services, environments, deployments, recipes, decisions, incidents) with the agent delegation primitives (task, skill, provider). Agents are pod-level identities — not tracked as workspace entities."
|
|
29
57
|
proposalId: builder-workspace-v1
|
|
30
58
|
subtype: builder
|
|
31
59
|
visibility: pod_visible
|
|
@@ -104,17 +132,38 @@ profiles:
|
|
|
104
132
|
icon: git-branch
|
|
105
133
|
color: blue
|
|
106
134
|
description: A feature or work item with a persistent AI session
|
|
135
|
+
# The feature's ONE lifecycle (founder, 2026-10-13). The stored keys stay
|
|
136
|
+
# the ones live pods already hold; the labels carry the decided words.
|
|
137
|
+
# `agent_status` is the agent pipeline's runtime bookkeeping, not a lifecycle.
|
|
138
|
+
lifecycle:
|
|
139
|
+
property: featureStatus
|
|
140
|
+
options:
|
|
141
|
+
- { key: backlog, label: Idea, category: open }
|
|
142
|
+
- { key: spec, label: Spec, category: active }
|
|
143
|
+
- { key: in_progress, label: Building, category: active }
|
|
144
|
+
- { key: in_review, label: Review, category: active }
|
|
145
|
+
- { key: done, label: Shipped, category: done }
|
|
146
|
+
- { key: cancelled, label: Dropped, category: lost, humanOnly: true }
|
|
107
147
|
properties:
|
|
108
148
|
- slug: featureStatus
|
|
109
149
|
label: Status
|
|
110
150
|
valueType: string
|
|
111
151
|
inputType: select
|
|
112
|
-
enumValues: [backlog, in_progress, in_review, done, cancelled]
|
|
152
|
+
enumValues: [backlog, spec, in_progress, in_review, done, cancelled]
|
|
113
153
|
- slug: priority
|
|
114
154
|
label: Priority
|
|
115
155
|
valueType: string
|
|
116
156
|
inputType: select
|
|
117
157
|
enumValues: [low, medium, high, critical]
|
|
158
|
+
# The work type of a feature (founder decision 2 A, 2026-10-26): a
|
|
159
|
+
# session's type is its subject's kind, and this one field splits the
|
|
160
|
+
# Feature kind. Bugs are `issue`, designs `ui-design`: never values here.
|
|
161
|
+
# No default: an unset value is "not typed yet", not "feature".
|
|
162
|
+
- slug: change
|
|
163
|
+
label: Change
|
|
164
|
+
valueType: string
|
|
165
|
+
inputType: select
|
|
166
|
+
enumValues: [feature, refactor, chore]
|
|
118
167
|
- slug: linkedApp
|
|
119
168
|
label: Linked App
|
|
120
169
|
valueType: string
|
|
@@ -204,12 +253,23 @@ profiles:
|
|
|
204
253
|
icon: book-marked
|
|
205
254
|
color: violet
|
|
206
255
|
description: A user-facing story that orchestrates features and drives the AI pipeline
|
|
256
|
+
# The story's ONE lifecycle (founder, 2026-10-13). Keys live pods hold are
|
|
257
|
+
# kept; `in-review` is not a story stage any more (its feature carries the
|
|
258
|
+
# review). `agent_status` is runtime bookkeeping, not a lifecycle.
|
|
259
|
+
lifecycle:
|
|
260
|
+
property: storyStatus
|
|
261
|
+
options:
|
|
262
|
+
- { key: backlog, label: Draft, category: open }
|
|
263
|
+
- { key: ready, label: Ready, category: active }
|
|
264
|
+
- { key: in-progress, label: In feature, category: active }
|
|
265
|
+
- { key: done, label: Done, category: done }
|
|
266
|
+
- { key: dropped, label: Dropped, category: lost, humanOnly: true }
|
|
207
267
|
properties:
|
|
208
268
|
- slug: storyStatus
|
|
209
269
|
label: Status
|
|
210
270
|
valueType: string
|
|
211
271
|
inputType: select
|
|
212
|
-
enumValues: [backlog, in-progress,
|
|
272
|
+
enumValues: [backlog, ready, in-progress, done, dropped]
|
|
213
273
|
constraints: { defaultValue: backlog }
|
|
214
274
|
- slug: priority
|
|
215
275
|
label: Priority
|
|
@@ -917,60 +977,6 @@ profiles:
|
|
|
917
977
|
valueType: date
|
|
918
978
|
inputType: date
|
|
919
979
|
|
|
920
|
-
- slug: project
|
|
921
|
-
displayName: Project
|
|
922
|
-
icon: folder
|
|
923
|
-
color: "#2E6DA4"
|
|
924
|
-
description: A bounded body of work delegated to one or more agents
|
|
925
|
-
properties:
|
|
926
|
-
- slug: project-status
|
|
927
|
-
label: Status
|
|
928
|
-
valueType: string
|
|
929
|
-
inputType: select
|
|
930
|
-
enumValues:
|
|
931
|
-
[Backlog, Queued, In Progress, Blocked, Completed, Cancelled]
|
|
932
|
-
- slug: project-priority
|
|
933
|
-
label: Priority
|
|
934
|
-
valueType: string
|
|
935
|
-
inputType: select
|
|
936
|
-
enumValues: [Critical, High, Medium, Low]
|
|
937
|
-
- slug: project-owner
|
|
938
|
-
label: Human Owner
|
|
939
|
-
valueType: entity_id
|
|
940
|
-
targetProfileSlug: person
|
|
941
|
-
- slug: project-start
|
|
942
|
-
label: Start Date
|
|
943
|
-
valueType: date
|
|
944
|
-
- slug: project-deadline
|
|
945
|
-
label: Deadline
|
|
946
|
-
valueType: date
|
|
947
|
-
- slug: project-health
|
|
948
|
-
label: Health
|
|
949
|
-
valueType: string
|
|
950
|
-
inputType: select
|
|
951
|
-
enumValues: [Green, Yellow, Red]
|
|
952
|
-
- slug: project-type
|
|
953
|
-
label: Type
|
|
954
|
-
valueType: string
|
|
955
|
-
inputType: select
|
|
956
|
-
enumValues:
|
|
957
|
-
[
|
|
958
|
-
Development,
|
|
959
|
-
Research,
|
|
960
|
-
Content,
|
|
961
|
-
Automation,
|
|
962
|
-
DevOps,
|
|
963
|
-
Data,
|
|
964
|
-
Outreach,
|
|
965
|
-
Monitoring,
|
|
966
|
-
]
|
|
967
|
-
- slug: project-goal
|
|
968
|
-
label: Goal
|
|
969
|
-
valueType: string
|
|
970
|
-
- slug: project-outcome
|
|
971
|
-
label: Expected Outcome
|
|
972
|
-
valueType: string
|
|
973
|
-
|
|
974
980
|
- slug: task
|
|
975
981
|
displayName: Task
|
|
976
982
|
icon: check-square
|
|
@@ -989,10 +995,6 @@ profiles:
|
|
|
989
995
|
inputType: select
|
|
990
996
|
enumValues: [Critical, High, Medium, Low]
|
|
991
997
|
constraints: { defaultValue: Medium }
|
|
992
|
-
- slug: task-project
|
|
993
|
-
label: Project
|
|
994
|
-
valueType: entity_id
|
|
995
|
-
targetProfileSlug: project
|
|
996
998
|
- slug: task-type
|
|
997
999
|
label: Type
|
|
998
1000
|
valueType: string
|
|
@@ -1291,6 +1293,117 @@ profiles:
|
|
|
1291
1293
|
valueType: string
|
|
1292
1294
|
inputType: text
|
|
1293
1295
|
|
|
1296
|
+
# A screen designed from REAL components (DESIGN-DEV-XP-PLAN P6). The design
|
|
1297
|
+
# is Puck JSON whose every `type` is a component the Storybook manifest
|
|
1298
|
+
# (`/manifests/components.json`) lists — never an invented one. The pod is
|
|
1299
|
+
# where the design lives; the canvas edits it; a coding agent implements it.
|
|
1300
|
+
# Skill: designing-with-real-components (+ design-critique for the rubric).
|
|
1301
|
+
# Process: "Design to implementation". A request yields 3 VARIANTS: sibling
|
|
1302
|
+
# ui-designs sharing one `variant-group`. References (the founder's own
|
|
1303
|
+
# captures, files) are linked with the base `references` relation — never a
|
|
1304
|
+
# property.
|
|
1305
|
+
- slug: ui-design
|
|
1306
|
+
displayName: UI Design
|
|
1307
|
+
icon: layout-template
|
|
1308
|
+
color: violet
|
|
1309
|
+
description: A screen designed from the real component library — Puck JSON a person reviews on the canvas and a coding agent implements.
|
|
1310
|
+
# The ONE lifecycle (work model L1). `approved` (the design review) and
|
|
1311
|
+
# `archived` are a person's call only.
|
|
1312
|
+
lifecycle:
|
|
1313
|
+
property: design-status
|
|
1314
|
+
options:
|
|
1315
|
+
- { key: draft, category: open }
|
|
1316
|
+
- { key: in-review, category: active }
|
|
1317
|
+
- { key: approved, category: active, humanOnly: true }
|
|
1318
|
+
- { key: implementing, category: active }
|
|
1319
|
+
- { key: implemented, category: done }
|
|
1320
|
+
- { key: archived, category: lost, humanOnly: true }
|
|
1321
|
+
# How it renders (entity rendering, decision 8): @synap-core/types/presentation.
|
|
1322
|
+
presentation:
|
|
1323
|
+
family: media
|
|
1324
|
+
media:
|
|
1325
|
+
source: { entityRef: screenshot }
|
|
1326
|
+
kind: image
|
|
1327
|
+
properties:
|
|
1328
|
+
- slug: design-status
|
|
1329
|
+
label: Status
|
|
1330
|
+
valueType: string
|
|
1331
|
+
inputType: select
|
|
1332
|
+
enumValues: [draft, in-review, approved, implementing, implemented, archived]
|
|
1333
|
+
constraints: { defaultValue: draft }
|
|
1334
|
+
- slug: target-surface
|
|
1335
|
+
label: Target surface
|
|
1336
|
+
valueType: string
|
|
1337
|
+
inputType: text
|
|
1338
|
+
placeholder: "The app and screen it is for, e.g. browser › Settings › Agents"
|
|
1339
|
+
- slug: design-scope
|
|
1340
|
+
label: Scope
|
|
1341
|
+
description: One component, or a whole page.
|
|
1342
|
+
valueType: string
|
|
1343
|
+
inputType: select
|
|
1344
|
+
enumValues: [component, page]
|
|
1345
|
+
constraints: { defaultValue: page }
|
|
1346
|
+
- slug: design-goal
|
|
1347
|
+
label: Goal
|
|
1348
|
+
description: The job the screen does for its reader, in one or two sentences — what the critique judges it against.
|
|
1349
|
+
valueType: string
|
|
1350
|
+
inputType: textarea
|
|
1351
|
+
- slug: variant-group
|
|
1352
|
+
label: Variant group
|
|
1353
|
+
description: One id shared by the sibling variants of one design request, so they are compared side by side.
|
|
1354
|
+
valueType: string
|
|
1355
|
+
inputType: text
|
|
1356
|
+
- slug: current-story-id
|
|
1357
|
+
label: Current story
|
|
1358
|
+
description: The Storybook story id of the screen as it is today, when it exists — the "before" of the compare.
|
|
1359
|
+
valueType: string
|
|
1360
|
+
inputType: text
|
|
1361
|
+
- slug: design-json
|
|
1362
|
+
label: Design (Puck JSON)
|
|
1363
|
+
description: "Puck data: content[] of { type, props: { id, … } }, root.props, zones. Every type is a component in the Storybook manifest."
|
|
1364
|
+
valueType: json
|
|
1365
|
+
inputType: json
|
|
1366
|
+
- slug: components-used
|
|
1367
|
+
label: Components used
|
|
1368
|
+
description: The component names the design JSON uses — filled from the JSON, never by hand.
|
|
1369
|
+
valueType: array
|
|
1370
|
+
inputType: text
|
|
1371
|
+
- slug: schema-version
|
|
1372
|
+
label: Schema version
|
|
1373
|
+
description: Version of the design JSON shape, for migrations.
|
|
1374
|
+
valueType: number
|
|
1375
|
+
inputType: number
|
|
1376
|
+
constraints: { defaultValue: 1 }
|
|
1377
|
+
- slug: screenshot
|
|
1378
|
+
label: Screenshot
|
|
1379
|
+
valueType: entity_id
|
|
1380
|
+
targetProfileSlug: file
|
|
1381
|
+
inputType: entity_select
|
|
1382
|
+
description: A render of the design, for review at a glance.
|
|
1383
|
+
- slug: motion
|
|
1384
|
+
label: Motion
|
|
1385
|
+
description: "The design's motion: a list of { trigger, target, preset } where preset is a named motion preset of the design tokens (each carries its reduced-motion fallback)."
|
|
1386
|
+
valueType: json
|
|
1387
|
+
inputType: json
|
|
1388
|
+
- slug: critique
|
|
1389
|
+
label: Critique
|
|
1390
|
+
description: "The latest critique findings (skill design-critique): a list of { id, tier, rule, severity, confidence, region, evidence, suggestion?, verdict? }."
|
|
1391
|
+
valueType: json
|
|
1392
|
+
inputType: json
|
|
1393
|
+
- slug: implementation-pr
|
|
1394
|
+
label: Implementation PR
|
|
1395
|
+
valueType: string
|
|
1396
|
+
inputType: url
|
|
1397
|
+
- slug: implemented-story-id
|
|
1398
|
+
label: Implemented story
|
|
1399
|
+
description: The Storybook story id of the built screen — the "after" of the compare.
|
|
1400
|
+
valueType: string
|
|
1401
|
+
inputType: text
|
|
1402
|
+
- slug: design-notes
|
|
1403
|
+
label: Notes
|
|
1404
|
+
valueType: string
|
|
1405
|
+
inputType: textarea
|
|
1406
|
+
|
|
1294
1407
|
views:
|
|
1295
1408
|
- name: Apps
|
|
1296
1409
|
type: table
|
|
@@ -1298,6 +1411,7 @@ views:
|
|
|
1298
1411
|
config:
|
|
1299
1412
|
columns: [title, appStatus, techStack, port, deployUrl]
|
|
1300
1413
|
- name: Task Board
|
|
1414
|
+
slug: task-board
|
|
1301
1415
|
type: kanban
|
|
1302
1416
|
scopeProfileSlug: task
|
|
1303
1417
|
groupBy: task-status
|
|
@@ -1321,11 +1435,41 @@ views:
|
|
|
1321
1435
|
scopeProfileSlug: devplane_incident
|
|
1322
1436
|
config:
|
|
1323
1437
|
columns: [title, severity, incidentStatus, affectedApps, resolvedAt]
|
|
1324
|
-
-
|
|
1438
|
+
# ── Folded from the retired dev-dashboard template (R7, 2026-09-27) ───────
|
|
1439
|
+
# Rebuilt over THIS template's own kinds (devplane_service /
|
|
1440
|
+
# devplane_deployment / provider). Never port dev-dashboard's `credential`
|
|
1441
|
+
# kind (secrets are not entities), its `vendor`/`repository` twins, or its
|
|
1442
|
+
# dev-* widgets (no implementation ever existed).
|
|
1443
|
+
- name: Service Health
|
|
1444
|
+
slug: service-health
|
|
1445
|
+
type: kanban
|
|
1446
|
+
scopeProfileSlug: devplane_service
|
|
1447
|
+
groupBy: serviceStatus
|
|
1448
|
+
description: Every service by health — healthy, degraded, down, maintenance.
|
|
1449
|
+
- name: Services by Type
|
|
1450
|
+
slug: services-by-type
|
|
1325
1451
|
type: kanban
|
|
1326
|
-
scopeProfileSlug:
|
|
1327
|
-
groupBy:
|
|
1328
|
-
description:
|
|
1452
|
+
scopeProfileSlug: devplane_service
|
|
1453
|
+
groupBy: serviceType
|
|
1454
|
+
description: Services grouped by what they are — API, worker, cron, database, cache, queue.
|
|
1455
|
+
- name: Deploy Timeline
|
|
1456
|
+
slug: deploy-timeline
|
|
1457
|
+
type: table
|
|
1458
|
+
scopeProfileSlug: devplane_deployment
|
|
1459
|
+
sortBy: deployedAt
|
|
1460
|
+
sortOrder: desc
|
|
1461
|
+
config:
|
|
1462
|
+
columns: [title, deployStatus, version, linkedApp, linkedEnvironment, deployedBy, deployedAt]
|
|
1463
|
+
description: Most recent deployments first — what shipped, where, and whether it held.
|
|
1464
|
+
- name: Provider Costs
|
|
1465
|
+
slug: provider-costs
|
|
1466
|
+
type: table
|
|
1467
|
+
scopeProfileSlug: provider
|
|
1468
|
+
sortBy: provider-spend-week
|
|
1469
|
+
sortOrder: desc
|
|
1470
|
+
config:
|
|
1471
|
+
columns: [title, provider-type, provider-spend-week, provider-budget-day, provider-cost-input, provider-cost-output, provider-key-health]
|
|
1472
|
+
description: What each provider costs — this week's spend against the daily ceiling, highest first.
|
|
1329
1473
|
# ── Architecture graph (ReactFlow) ───────────────────────────────────────
|
|
1330
1474
|
# These views are MULTI-PROFILE on purpose: a flow that only loaded one
|
|
1331
1475
|
# profile would have nodes but no edges (its relations point at OTHER types).
|
|
@@ -1401,6 +1545,547 @@ playbooks:
|
|
|
1401
1545
|
executor: is-agent
|
|
1402
1546
|
status: active
|
|
1403
1547
|
|
|
1548
|
+
# THE PROCESS on `ui-design` (DESIGN-DEV-XP-PLAN P6). It FOLLOWS the
|
|
1549
|
+
# lifecycle the profile declares (`design-status`); it never keeps a second
|
|
1550
|
+
# status. `approved` is humanOnly: a person sets it on the canvas, so no
|
|
1551
|
+
# stage owns it. Generate writes 3 sibling VARIANTS (one variant-group);
|
|
1552
|
+
# Critique (no status, like Verify) judges them against the design-critique
|
|
1553
|
+
# rubric and a blocker loops to Generate. The Review gate is the commitment:
|
|
1554
|
+
# nothing is implemented from a design a person has not approved; a
|
|
1555
|
+
# rejection loops to Generate. Verify's check gate and Done's human gate both
|
|
1556
|
+
# send rework to Implement.
|
|
1557
|
+
# The worker is MANUAL: Generate creates the sibling variants as ui-designs,
|
|
1558
|
+
# and an `on: created` worker would propose a run for each of them (the
|
|
1559
|
+
# activator grammar has no filter to tell a request from a variant).
|
|
1560
|
+
- name: Design to implementation
|
|
1561
|
+
description: Take a UI design request from three variants built only of real Storybook components, through a rubric critique and a person's review on the canvas, to a pull request verified by the gates, a before/after compare and a walk in the running app.
|
|
1562
|
+
goalTemplate: >-
|
|
1563
|
+
Take this UI design ({design}) for {surface} from draft to implemented.
|
|
1564
|
+
Load the designing-with-real-components skill first, and design-critique
|
|
1565
|
+
for the Critique stage. GENERATE: read the Storybook component manifest
|
|
1566
|
+
(/manifests/components.json, or the Storybook MCP), the design's goal and
|
|
1567
|
+
scope and the entities it references, and write THREE variants as Puck
|
|
1568
|
+
JSON — this design and two sibling ui-designs sharing its variant-group —
|
|
1569
|
+
using ONLY components the manifest lists, with props each one declares,
|
|
1570
|
+
design tokens and named motion presets only; each variant lays out every
|
|
1571
|
+
state the screen has (empty, loading, failed, full, long content); fill
|
|
1572
|
+
components-used from the JSON and set schema-version. CRITIQUE: judge each
|
|
1573
|
+
variant with the design-critique rubric and write the findings into its
|
|
1574
|
+
critique; a checked or pattern blocker sends the run back to Generate;
|
|
1575
|
+
opinions are never applied. REVIEW: a person compares the variants on the
|
|
1576
|
+
canvas and approves one; nothing is implemented from an unapproved design,
|
|
1577
|
+
and only a person sets approved. IMPLEMENT: read design-json and the
|
|
1578
|
+
Storybook MCP, build the screen from those same real components, open a
|
|
1579
|
+
pull request and record its URL in implementation-pr and the built
|
|
1580
|
+
screen's story in implemented-story-id. VERIFY: typecheck, story coverage,
|
|
1581
|
+
interaction and accessibility tests, visual regression and the token
|
|
1582
|
+
guards are green, the implemented story was captured and compared with
|
|
1583
|
+
the design and the current story, and the screen was walked in the
|
|
1584
|
+
running app. Move the design's status only through its lifecycle
|
|
1585
|
+
(update_entity with expectedStatus); never invent a status.
|
|
1586
|
+
subjectProfile:
|
|
1587
|
+
profileSlug: ui-design
|
|
1588
|
+
statusProperty: design-status
|
|
1589
|
+
# No stage owns these: `approved` and `archived` are a person's call
|
|
1590
|
+
# (humanOnly on the lifecycle).
|
|
1591
|
+
humanOnlyStatuses: [approved, archived]
|
|
1592
|
+
activators:
|
|
1593
|
+
- { on: manual, mode: propose }
|
|
1594
|
+
params:
|
|
1595
|
+
- { name: design, type: entity, label: UI design, required: true }
|
|
1596
|
+
- { name: surface, type: text, label: Target surface }
|
|
1597
|
+
executor: is-agent
|
|
1598
|
+
status: active
|
|
1599
|
+
stages:
|
|
1600
|
+
- key: generate
|
|
1601
|
+
name: Generate
|
|
1602
|
+
category: planned
|
|
1603
|
+
subjectStatus: draft
|
|
1604
|
+
goal: Write three variants as Puck JSON — this design and two siblings in its variant-group — from components the Storybook manifest lists, with their declared props, tokens and named motion presets only, each with every state the screen has.
|
|
1605
|
+
expectedOutputs:
|
|
1606
|
+
- kind: ui-design
|
|
1607
|
+
label: Sibling variants (same variant-group)
|
|
1608
|
+
relationToSubject: relates_to
|
|
1609
|
+
criteria:
|
|
1610
|
+
- key: design-json-written
|
|
1611
|
+
statement: The design's Puck JSON is saved on the design.
|
|
1612
|
+
check: { kind: evidence, evidenceKey: design-json }
|
|
1613
|
+
- key: design-variants-grouped
|
|
1614
|
+
statement: Three variants exist — this design and two sibling ui-designs in the same variant-group — each with its own design JSON laying out every state the screen has among empty, loading, failed, full and long content.
|
|
1615
|
+
check: { kind: judge }
|
|
1616
|
+
- key: design-real-components-only
|
|
1617
|
+
statement: Every component type in each variant's design JSON is in the Storybook manifest and uses only props it declares, and components-used lists exactly those types.
|
|
1618
|
+
check: { kind: judge }
|
|
1619
|
+
- key: critique
|
|
1620
|
+
name: Critique
|
|
1621
|
+
category: started
|
|
1622
|
+
goal: Judge every variant with the design-critique rubric and write its findings into the variant's critique; a checked or pattern blocker sends the run back to Generate.
|
|
1623
|
+
gate: { kind: check }
|
|
1624
|
+
onFail: { toStage: generate }
|
|
1625
|
+
expectedOutputs:
|
|
1626
|
+
- kind: document
|
|
1627
|
+
label: Design critique (findings by variant, tier and rule id)
|
|
1628
|
+
relationToSubject: relates_to
|
|
1629
|
+
criteria:
|
|
1630
|
+
- key: critique-written
|
|
1631
|
+
statement: Each variant's critique holds its findings, each with a rule id of the design-critique rubric, a tier, a severity and a region.
|
|
1632
|
+
check: { kind: evidence, evidenceKey: critique }
|
|
1633
|
+
- key: critique-no-open-blocker
|
|
1634
|
+
statement: No checked or pattern finding of severity blocker is left open on the variants going to review.
|
|
1635
|
+
check: { kind: judge }
|
|
1636
|
+
- key: critique-opinions-not-applied
|
|
1637
|
+
statement: Every opinion finding names a heuristic id and a region, has low confidence, and was not applied to the design.
|
|
1638
|
+
check: { kind: judge }
|
|
1639
|
+
- key: review
|
|
1640
|
+
name: Review
|
|
1641
|
+
category: started
|
|
1642
|
+
subjectStatus: in-review
|
|
1643
|
+
goal: A person compares the variants and their critiques on the canvas and approves one, or sends the design back with what to change. A sibling chosen over this design is written into it first, so the run carries the chosen variant.
|
|
1644
|
+
# The commitment: implementation starts only from an approved design.
|
|
1645
|
+
gate: { kind: human }
|
|
1646
|
+
onFail: { toStage: generate }
|
|
1647
|
+
- key: implement
|
|
1648
|
+
name: Implement
|
|
1649
|
+
category: started
|
|
1650
|
+
subjectStatus: implementing
|
|
1651
|
+
goal: Build the screen from the approved design JSON with the real components, open a pull request and record it and the built screen's story on the design.
|
|
1652
|
+
criteria:
|
|
1653
|
+
- key: implementation-pr-linked
|
|
1654
|
+
statement: The pull request URL is recorded in implementation-pr.
|
|
1655
|
+
check: { kind: evidence, evidenceKey: implementation-pr }
|
|
1656
|
+
- key: implemented-story-linked
|
|
1657
|
+
statement: The Storybook story id of the built screen is recorded in implemented-story-id.
|
|
1658
|
+
check: { kind: evidence, evidenceKey: implemented-story-id }
|
|
1659
|
+
- key: implementation-matches-design
|
|
1660
|
+
statement: The screen uses the components and structure the design JSON names, with no invented component and no hardcoded colour.
|
|
1661
|
+
check: { kind: judge }
|
|
1662
|
+
- key: verify
|
|
1663
|
+
name: Verify
|
|
1664
|
+
category: started
|
|
1665
|
+
goal: Run the gates, capture the implemented story and compare it with the design (and the current story when there is one), and walk the screen in the running app; write what passed and what failed.
|
|
1666
|
+
gate: { kind: check }
|
|
1667
|
+
onFail: { toStage: implement }
|
|
1668
|
+
expectedOutputs:
|
|
1669
|
+
- kind: document
|
|
1670
|
+
label: Verification report (gates, compare and dogfood walk)
|
|
1671
|
+
relationToSubject: relates_to
|
|
1672
|
+
criteria:
|
|
1673
|
+
- key: verify-gates-green
|
|
1674
|
+
statement: Typecheck, story coverage, interaction, accessibility, visual regression and the token guards are green on the pull request.
|
|
1675
|
+
check: { kind: judge }
|
|
1676
|
+
- key: verify-compare
|
|
1677
|
+
statement: The implemented story was captured and compared with the design, and the report names every difference.
|
|
1678
|
+
check: { kind: judge }
|
|
1679
|
+
- key: verify-dogfood-walk
|
|
1680
|
+
statement: The screen was walked in the running app and the report carries what was seen.
|
|
1681
|
+
check: { kind: judge }
|
|
1682
|
+
- key: done
|
|
1683
|
+
name: Done
|
|
1684
|
+
category: completed
|
|
1685
|
+
subjectStatus: implemented
|
|
1686
|
+
goal: A person confirms the pull request merged and the screen matches the approved design; approving writes implemented.
|
|
1687
|
+
# A HUMAN gate (as Content OS Publish): a check gate judges the stage
|
|
1688
|
+
# being LEFT, so it would write implemented before anyone saw the merge.
|
|
1689
|
+
gate: { kind: human }
|
|
1690
|
+
onFail: { toStage: implement }
|
|
1691
|
+
|
|
1692
|
+
# THE APP FACTORY (2026-10-21): "let's build app X" → a designed, verified,
|
|
1693
|
+
# built app, the person asked at THREE gates only (decisions, design
|
|
1694
|
+
# approval, first look after slice 1). Generalises the Content Studio run of
|
|
1695
|
+
# 2026-10-20 (plan doc 6f728471); the method lives in four skills
|
|
1696
|
+
# (app-factory-research, -design-canvas, -design-review, -build-slice) and
|
|
1697
|
+
# the Website Factory's design-kit/.
|
|
1698
|
+
#
|
|
1699
|
+
# SUBJECT: the app (`devplane_app`), READ, not moved. That kind declares no
|
|
1700
|
+
# `lifecycle:` block, and the catalog's rule is that a kind a playbook moves
|
|
1701
|
+
# declares the moved property as its lifecycle (lifecycle-declarations
|
|
1702
|
+
# test). Its select `appStatus` (planning · active · deprecated · archived)
|
|
1703
|
+
# is therefore left to the person, and no stage carries a subjectStatus.
|
|
1704
|
+
# Consequence: a per-stage worker (`enters_status`) has nothing to fire on,
|
|
1705
|
+
# so the one worker is MANUAL. Making the factory's phases visible on the
|
|
1706
|
+
# Apps board, and giving each stage its own worker, needs a declared
|
|
1707
|
+
# lifecycle on devplane_app with an option per phase — a kind change for
|
|
1708
|
+
# the founder to decide, not invented here.
|
|
1709
|
+
- name: Build an app (App Factory)
|
|
1710
|
+
description: Turn "let's build app X" into a researched, designed, reviewed and verified app, built from the Website Factory in slices. The person is asked only three times — the decisions, the design approval, and a first look after slice 1.
|
|
1711
|
+
goalTemplate: >-
|
|
1712
|
+
Build the app "{name}": {idea}. Path: {path}. Work it as the App
|
|
1713
|
+
Factory, loading each stage's skill with synap_load_skill. INTAKE: find
|
|
1714
|
+
or create the app (resolve first; one devplane_app, never a twin), make
|
|
1715
|
+
it this session's subject, and record the idea in the person's words.
|
|
1716
|
+
RESEARCH (app-factory-research): name-collision check, a data contract
|
|
1717
|
+
per screen with live examples and counts, an identity and permission
|
|
1718
|
+
table (who writes, who approves, can the app's credential do it, with
|
|
1719
|
+
evidence), every platform gap with an id and an owner, and the real
|
|
1720
|
+
sample world; write the plan document. DECISIONS: ask the person 2-4
|
|
1721
|
+
multiple-choice questions in ONE ask, each with a recommended default;
|
|
1722
|
+
nothing is designed before they answer. DESIGN (app-factory-design-canvas):
|
|
1723
|
+
create the app repo from the Website Factory, draw every page and every
|
|
1724
|
+
state, desktop and phone, with its design-kit in the real components and
|
|
1725
|
+
the person's real data, and publish the canvas. REVIEW
|
|
1726
|
+
(app-factory-design-review): run the three read-only lenses in parallel —
|
|
1727
|
+
UX surface, component fidelity + contrast + responsive, data contract per
|
|
1728
|
+
element. CONSOLIDATE: one writer merges them into a redesign brief,
|
|
1729
|
+
applies it, and re-runs design:check and design:preview. DESIGN APPROVAL:
|
|
1730
|
+
the person approves the canvas; nothing is built from boards they have
|
|
1731
|
+
not approved. INFRA: open the platform, catalog and factory pull
|
|
1732
|
+
requests the slices need, each gap with its owner, or label a bridge in
|
|
1733
|
+
the UI and the code. BUILD (app-factory-build-slice): slice by slice,
|
|
1734
|
+
server-only credentials, no writes until the person can sign in, the
|
|
1735
|
+
Website Factory gates re-run independently on the devbox; after slice 1
|
|
1736
|
+
STOP for the person's first look. DOGFOOD: walk the app as the person
|
|
1737
|
+
would and collect their verdict. Branches and pull requests only: never
|
|
1738
|
+
push to main, never publish the catalog, never deploy production.
|
|
1739
|
+
Separate VERIFIED (gate output quoted) from NEEDS-DOGFOOD in every
|
|
1740
|
+
report.
|
|
1741
|
+
subjectProfile:
|
|
1742
|
+
profileSlug: devplane_app
|
|
1743
|
+
activators:
|
|
1744
|
+
- { on: manual, mode: propose }
|
|
1745
|
+
params:
|
|
1746
|
+
- { name: name, type: text, label: App name, required: true }
|
|
1747
|
+
- { name: idea, type: text, label: "What should it do, for whom, and what is hard today (in your words)?", required: true }
|
|
1748
|
+
- name: path
|
|
1749
|
+
type: choice
|
|
1750
|
+
label: "Who uses it: the owner over their own pod (private) · visitors with their own pod (pod-app) · the public, showing one pod's published data (showcase) · the public, no pod data (static)"
|
|
1751
|
+
default: private
|
|
1752
|
+
options: [private, pod-app, showcase, static]
|
|
1753
|
+
- { name: app, type: entity, label: The app, if it already exists }
|
|
1754
|
+
executor: is-agent
|
|
1755
|
+
status: active
|
|
1756
|
+
criteria:
|
|
1757
|
+
- key: three-gates-only
|
|
1758
|
+
statement: The person was asked only at the three gates (decisions, design approval, first look), each time in one message with a recommended default.
|
|
1759
|
+
check: { kind: judge }
|
|
1760
|
+
- key: real-sample-world
|
|
1761
|
+
statement: Every board and every built page shows the person's real data; no words are attributed to the person that they did not write.
|
|
1762
|
+
check: { kind: judge }
|
|
1763
|
+
- key: gates-independently-verified
|
|
1764
|
+
statement: Every gate claimed in a report (design:check, design:preview, pnpm verify, pnpm shots, the credential and mutation greps) was re-run by the orchestrator and its output quoted.
|
|
1765
|
+
check: { kind: judge }
|
|
1766
|
+
stages:
|
|
1767
|
+
- key: intake
|
|
1768
|
+
name: Intake
|
|
1769
|
+
category: planned
|
|
1770
|
+
goal: Find or create the app (resolve first), make it the session's subject, and write the idea, the problem, the goal and the measure of success in the person's words.
|
|
1771
|
+
criteria:
|
|
1772
|
+
- key: intake-subject-set
|
|
1773
|
+
statement: The session's subject is the app (one devplane_app, found before created).
|
|
1774
|
+
check: { kind: judge }
|
|
1775
|
+
- key: intake-own-words
|
|
1776
|
+
statement: The problem and the goal are quoted in the person's words, with what is not in v1.
|
|
1777
|
+
check: { kind: judge }
|
|
1778
|
+
- key: research
|
|
1779
|
+
name: Research
|
|
1780
|
+
category: planned
|
|
1781
|
+
goal: Name-collision check, data contract per screen with live counts, identity and permission table, platform gaps with owners, the real sample world, and the plan document (app-factory-research).
|
|
1782
|
+
expectedOutputs:
|
|
1783
|
+
- kind: document
|
|
1784
|
+
label: Plan (problem, decisions, facts verified, pages, slices, gaps register)
|
|
1785
|
+
relationToSubject: relates_to
|
|
1786
|
+
- kind: document
|
|
1787
|
+
label: Data contract per screen and identity table
|
|
1788
|
+
relationToSubject: relates_to
|
|
1789
|
+
criteria:
|
|
1790
|
+
- key: research-contract-live
|
|
1791
|
+
statement: Every screen has data-contract rows with a live example and count, and every action has an identity row with evidence (a live call or file:line).
|
|
1792
|
+
check: { kind: judge }
|
|
1793
|
+
- key: research-gaps-owned
|
|
1794
|
+
statement: Every platform gap has an id, an owner and the slice it blocks.
|
|
1795
|
+
check: { kind: judge }
|
|
1796
|
+
- key: decisions
|
|
1797
|
+
name: Decisions
|
|
1798
|
+
category: planned
|
|
1799
|
+
goal: Ask the person 2-4 multiple-choice questions in one ask, each with a recommended default and its cost; record each answer as a decision on the app.
|
|
1800
|
+
# Gate 1 of 3: nothing is designed before the person answers.
|
|
1801
|
+
gate: { kind: human }
|
|
1802
|
+
onFail: { toStage: research }
|
|
1803
|
+
expectedOutputs:
|
|
1804
|
+
- kind: devplane_decision_record
|
|
1805
|
+
label: One decision per answered question
|
|
1806
|
+
relationToSubject: relates_to
|
|
1807
|
+
- key: design
|
|
1808
|
+
name: Design
|
|
1809
|
+
category: started
|
|
1810
|
+
goal: Create the app repo from the Website Factory and draw every page and every state, desktop and phone, with its design-kit in the real components and the person's real data; publish the canvas (app-factory-design-canvas).
|
|
1811
|
+
expectedOutputs:
|
|
1812
|
+
- kind: document
|
|
1813
|
+
label: Design canvas (link) and board list
|
|
1814
|
+
relationToSubject: relates_to
|
|
1815
|
+
criteria:
|
|
1816
|
+
- key: design-check-clean
|
|
1817
|
+
statement: pnpm design:check reports 0 problems and pnpm design:preview reports no overflow and no serious or critical axe issue, both quoted.
|
|
1818
|
+
check: { kind: evidence, evidenceKey: design-check }
|
|
1819
|
+
- key: design-every-state
|
|
1820
|
+
statement: Every page in the plan has its desktop board, its states and, when used on a phone, its phone board.
|
|
1821
|
+
check: { kind: judge }
|
|
1822
|
+
- key: review
|
|
1823
|
+
name: Review
|
|
1824
|
+
category: started
|
|
1825
|
+
goal: Run the three read-only lenses in parallel — UX surface and consolidation; component fidelity, contrast and responsive; data contract per element (app-factory-design-review).
|
|
1826
|
+
expectedOutputs:
|
|
1827
|
+
- kind: document
|
|
1828
|
+
label: Review findings (three lenses, by severity, with evidence)
|
|
1829
|
+
relationToSubject: relates_to
|
|
1830
|
+
- key: consolidate
|
|
1831
|
+
name: Consolidate
|
|
1832
|
+
category: started
|
|
1833
|
+
goal: One writer merges the findings into a redesign brief (must-fix, boards to add, the person's questions with defaults, fidelity, real data), applies it, rebuilds and re-checks.
|
|
1834
|
+
expectedOutputs:
|
|
1835
|
+
- kind: document
|
|
1836
|
+
label: Redesign brief
|
|
1837
|
+
relationToSubject: relates_to
|
|
1838
|
+
criteria:
|
|
1839
|
+
- key: consolidate-nothing-dropped
|
|
1840
|
+
statement: Every lens finding is applied, kept with a reason, asked as a question, or registered as a gap.
|
|
1841
|
+
check: { kind: judge }
|
|
1842
|
+
- key: design-approval
|
|
1843
|
+
name: Design approval
|
|
1844
|
+
category: started
|
|
1845
|
+
goal: The person approves the canvas (and answers the brief's questions in one message), or sends it back with what to change.
|
|
1846
|
+
# Gate 2 of 3: nothing is built from boards the person has not approved.
|
|
1847
|
+
gate: { kind: human }
|
|
1848
|
+
onFail: { toStage: consolidate }
|
|
1849
|
+
- key: infra
|
|
1850
|
+
name: Infra
|
|
1851
|
+
category: started
|
|
1852
|
+
goal: Open the platform, catalog and factory pull requests the slices need, each gap with its owner; where a gap stays open, label the bridge in the UI and the code.
|
|
1853
|
+
expectedOutputs:
|
|
1854
|
+
- kind: document
|
|
1855
|
+
label: Infra pull requests and the gaps they close (links, owners)
|
|
1856
|
+
relationToSubject: relates_to
|
|
1857
|
+
- key: first-slice
|
|
1858
|
+
name: Slice 1 and first look
|
|
1859
|
+
category: started
|
|
1860
|
+
goal: Build slice 1 from its approved boards (app-factory-build-slice), re-run every gate independently on the devbox, report VERIFIED and NEEDS-DOGFOOD, then stop for the person's first look.
|
|
1861
|
+
# Gate 3 of 3: the person's first look decides the next slices.
|
|
1862
|
+
gate: { kind: human }
|
|
1863
|
+
onFail: { toStage: first-slice }
|
|
1864
|
+
expectedOutputs:
|
|
1865
|
+
- kind: document
|
|
1866
|
+
label: Slice 1 report (pull request, quoted gates, differences from the boards)
|
|
1867
|
+
relationToSubject: relates_to
|
|
1868
|
+
- kind: devplane_deployment
|
|
1869
|
+
label: Preview deployment
|
|
1870
|
+
relationToSubject: relates_to
|
|
1871
|
+
optional: true
|
|
1872
|
+
criteria:
|
|
1873
|
+
- key: slice1-gates-quoted
|
|
1874
|
+
statement: pnpm verify, the screenshots, and the credential and mutation greps were re-run by the orchestrator and quoted.
|
|
1875
|
+
check: { kind: evidence, evidenceKey: verify-output }
|
|
1876
|
+
- key: slice1-pr-open
|
|
1877
|
+
statement: Slice 1 is a pull request on the app repo; nothing was pushed to main or deployed to production.
|
|
1878
|
+
check: { kind: judge }
|
|
1879
|
+
- key: slices
|
|
1880
|
+
name: Next slices
|
|
1881
|
+
category: started
|
|
1882
|
+
goal: Build the remaining slices in plan order, each with the same gates, independent verification and report.
|
|
1883
|
+
expectedOutputs:
|
|
1884
|
+
- kind: document
|
|
1885
|
+
label: Slice reports
|
|
1886
|
+
relationToSubject: relates_to
|
|
1887
|
+
- key: dogfood
|
|
1888
|
+
name: Dogfood
|
|
1889
|
+
category: completed
|
|
1890
|
+
goal: Walk the built app as the person would (every door, every state reachable), collect their verdict after real use, and report VERIFIED and NEEDS-DOGFOOD; the person sets the app's status (active) themselves.
|
|
1891
|
+
expectedOutputs:
|
|
1892
|
+
- kind: document
|
|
1893
|
+
label: Dogfood report and the person's verdict
|
|
1894
|
+
relationToSubject: relates_to
|
|
1895
|
+
|
|
1896
|
+
# THE DEV LOOP AS STORED CONFIG (plan v5 T2, 2026-10-27). One change = one
|
|
1897
|
+
# session on its feature: shaped → building → PR opened → checks green →
|
|
1898
|
+
# merged → deployed to lab → dogfooded → criteria verified. It FOLLOWS the
|
|
1899
|
+
# feature's declared lifecycle (`featureStatus`, named as statusProperty, no
|
|
1900
|
+
# second status): Shape writes spec, Build in_progress, PR opened in_review,
|
|
1901
|
+
# Verify done (an agent's move into done proposes). The stages after PR
|
|
1902
|
+
# opened carry no status — the feature stays In review until it ships.
|
|
1903
|
+
#
|
|
1904
|
+
# ONE human gate, at the one commitment: the lab deploy stays the person's
|
|
1905
|
+
# (plan v5 decision F: a merge needs no proposal of its own; the PR outcome
|
|
1906
|
+
# and this step carry it). Red checks send the work back to Build (onFail).
|
|
1907
|
+
#
|
|
1908
|
+
# The facts move it, not the agent's word: the staged automations
|
|
1909
|
+
# `ship-a-change-*` (automations/, plan v5 T2 verbs) post the evidence the
|
|
1910
|
+
# criteria below read when GitHub or the pod says the PR opened, CI finished,
|
|
1911
|
+
# the PR merged or the pod deployed. The `github-read` capability lets the
|
|
1912
|
+
# worker read the same facts on the person's own token.
|
|
1913
|
+
#
|
|
1914
|
+
# WORKER: a feature entering Spec proposes a run (the person approves who
|
|
1915
|
+
# works it; a goal hands it to its agent delegate). Throttled to 5 waiting.
|
|
1916
|
+
- name: Ship a change
|
|
1917
|
+
description: Take a shaped change from branch to pull request, green checks, merge, lab and a dogfood walk, until its criteria are verified. The facts (PR opened, CI finished, merged, deployed) move the step; the person approves only the lab deploy.
|
|
1918
|
+
goalTemplate: >-
|
|
1919
|
+
Ship this change ({feature}) through one session, one branch and its pull
|
|
1920
|
+
requests, then the merge, the lab and a dogfood walk, until its criteria
|
|
1921
|
+
are verified. The step follows the work; move the feature's status only
|
|
1922
|
+
through its lifecycle (update_entity with expectedStatus), never invent
|
|
1923
|
+
one. SHAPE: write the end state and 2-5 binary criteria on this session,
|
|
1924
|
+
set the feature's change type (feature, refactor or chore), and name the
|
|
1925
|
+
repos it touches. BUILD: branch <type>/<slug> from origin/main in your own
|
|
1926
|
+
worktree, commit in verified slices, and run the smallest gate that
|
|
1927
|
+
answers for each finished slice, with its negative control; quote the
|
|
1928
|
+
output. PR OPENED: open a draft pull request whose body carries the line
|
|
1929
|
+
"Pod session: <this session id>", and record it on this session as the
|
|
1930
|
+
outcome pr-<repo>-<number> (kind pull_request, ref url); one outcome per
|
|
1931
|
+
pull request, and for each a session criterion keyed the same,
|
|
1932
|
+
"<repo>#<number> is merged", checked by the capability
|
|
1933
|
+
github_check_pr_merged, so the pod grades the merge itself. CHECKS: read the checks on the pull request's head with
|
|
1934
|
+
github_pr_checks (the github-read capability, on the person's own token)
|
|
1935
|
+
or wait for the ci.finished event; a red check sends the work back to
|
|
1936
|
+
Build. MERGE: a person merges; never merge and never push to main. The
|
|
1937
|
+
merge marks the outcome met. DEPLOY: ask the person for the lab deploy
|
|
1938
|
+
(synap_request_deploy_approval); the deploy is their call. DOGFOOD: walk
|
|
1939
|
+
the change in the running lab as a person would and report WORKS, BROKEN
|
|
1940
|
+
or CANNOT-TELL with what was seen. VERIFY: grade every criterion with its
|
|
1941
|
+
evidence, and separate VERIFIED (gate or check output quoted) from
|
|
1942
|
+
NEEDS-DOGFOOD.
|
|
1943
|
+
subjectProfile:
|
|
1944
|
+
profileSlug: devplane_feature
|
|
1945
|
+
statusProperty: featureStatus
|
|
1946
|
+
# No stage owns these: Idea is before the change is shaped, Dropped is a
|
|
1947
|
+
# person's call (humanOnly on the lifecycle).
|
|
1948
|
+
humanOnlyStatuses: [backlog, cancelled]
|
|
1949
|
+
activators:
|
|
1950
|
+
- { on: enters_status, status: spec, mode: propose, maxPendingApprovals: 5 }
|
|
1951
|
+
- { on: manual, mode: propose }
|
|
1952
|
+
params:
|
|
1953
|
+
- { name: feature, type: entity, label: Feature, required: true }
|
|
1954
|
+
executor: is-agent
|
|
1955
|
+
status: active
|
|
1956
|
+
stages:
|
|
1957
|
+
- key: shape
|
|
1958
|
+
name: Shaped
|
|
1959
|
+
category: planned
|
|
1960
|
+
subjectStatus: spec
|
|
1961
|
+
goal: Write the end state and 2-5 binary criteria on the session, set the feature's change type, and name the repos the change touches.
|
|
1962
|
+
criteria:
|
|
1963
|
+
- key: shape-criteria-written
|
|
1964
|
+
statement: The session states the end state and 2-5 binary criteria a check, a judge or a person can grade.
|
|
1965
|
+
check: { kind: judge }
|
|
1966
|
+
- key: shape-change-typed
|
|
1967
|
+
statement: The feature's change type is set (feature, refactor or chore) and the repos it touches are named.
|
|
1968
|
+
check: { kind: judge }
|
|
1969
|
+
- key: build
|
|
1970
|
+
name: Building
|
|
1971
|
+
category: started
|
|
1972
|
+
subjectStatus: in_progress
|
|
1973
|
+
goal: Build on a branch named after the work, from origin/main in your own worktree; commit in verified slices and run the smallest gate that answers for each finished slice, with its negative control.
|
|
1974
|
+
criteria:
|
|
1975
|
+
- key: build-gates-quoted
|
|
1976
|
+
statement: Each finished slice was gated once (the smallest gate that answers) and its output is quoted in the room, red lines attributed against main.
|
|
1977
|
+
check: { kind: judge }
|
|
1978
|
+
- key: build-negative-control
|
|
1979
|
+
statement: Every new test was run with its fix reverted and failed.
|
|
1980
|
+
check: { kind: judge }
|
|
1981
|
+
- key: pr-opened
|
|
1982
|
+
name: PR opened
|
|
1983
|
+
category: started
|
|
1984
|
+
subjectStatus: in_review
|
|
1985
|
+
goal: 'Open a draft pull request whose body carries the line "Pod session: <this session id>" and record it as the outcome pr-<repo>-<number> with its url.'
|
|
1986
|
+
expectedOutputs:
|
|
1987
|
+
- kind: pull_request
|
|
1988
|
+
label: Pull request (outcome pr-<repo>-<number>, ref = its url)
|
|
1989
|
+
relationToSubject: none
|
|
1990
|
+
criteria:
|
|
1991
|
+
- key: pr-opened
|
|
1992
|
+
statement: A pull request for this change is open and recorded on the session as a pr-<repo>-<number> outcome with its url.
|
|
1993
|
+
check: { kind: evidence, evidenceKey: pr-opened }
|
|
1994
|
+
- key: pr-names-session
|
|
1995
|
+
statement: The pull request body carries the line naming this Pod session.
|
|
1996
|
+
check: { kind: judge }
|
|
1997
|
+
- key: checks
|
|
1998
|
+
name: Checks green
|
|
1999
|
+
category: started
|
|
2000
|
+
goal: Read the checks on the pull request's head (github_pr_checks, or the ci.finished event); fix anything red in Build.
|
|
2001
|
+
gate: { kind: check }
|
|
2002
|
+
onFail: { toStage: build }
|
|
2003
|
+
criteria:
|
|
2004
|
+
- key: checks-green
|
|
2005
|
+
statement: Every required check on the pull request's head finished green.
|
|
2006
|
+
check:
|
|
2007
|
+
kind: evidence
|
|
2008
|
+
evidenceKey: checks-green
|
|
2009
|
+
hint: Posted by the ci.finished automation, or by the worker after github_pr_checks on the head sha (passed only when every run concluded success, neutral or skipped).
|
|
2010
|
+
- key: merge
|
|
2011
|
+
name: Merged
|
|
2012
|
+
category: started
|
|
2013
|
+
goal: A person merges the pull request; the merge marks the pr-<repo>-<number> outcome met and its criterion of the same key (github_check_pr_merged) grades it on GitHub's own answer. Never merge and never push to main.
|
|
2014
|
+
criteria:
|
|
2015
|
+
- key: merged
|
|
2016
|
+
statement: The pull request is merged.
|
|
2017
|
+
check:
|
|
2018
|
+
kind: evidence
|
|
2019
|
+
evidenceKey: merged
|
|
2020
|
+
hint: Posted by the dev.pr_merged automation, or by the worker after github_pr_get (merged true).
|
|
2021
|
+
- key: deploy
|
|
2022
|
+
name: Deployed to lab
|
|
2023
|
+
category: started
|
|
2024
|
+
goal: Ask the person to deploy the merged build to lab (synap_request_deploy_approval) and record the deployed sha.
|
|
2025
|
+
# The ONE commitment: a deploy is the person's call.
|
|
2026
|
+
gate: { kind: human }
|
|
2027
|
+
onFail: { toStage: build }
|
|
2028
|
+
criteria:
|
|
2029
|
+
- key: deployed
|
|
2030
|
+
statement: The lab runs a build that contains the merge commit.
|
|
2031
|
+
check:
|
|
2032
|
+
kind: evidence
|
|
2033
|
+
evidenceKey: deployed
|
|
2034
|
+
hint: The deployed sha contains the merge commit (github_compare base merge commit, head deployed sha, status identical or ahead).
|
|
2035
|
+
- key: dogfood
|
|
2036
|
+
name: Dogfooded
|
|
2037
|
+
category: started
|
|
2038
|
+
goal: Walk the change in the running lab as a person would, entering through the doors a person enters through, and report WORKS, BROKEN or CANNOT-TELL with what was seen.
|
|
2039
|
+
gate: { kind: check }
|
|
2040
|
+
onFail: { toStage: build }
|
|
2041
|
+
expectedOutputs:
|
|
2042
|
+
- kind: document
|
|
2043
|
+
label: Dogfood report (each path WORKS, BROKEN or CANNOT-TELL, with what was seen)
|
|
2044
|
+
relationToSubject: relates_to
|
|
2045
|
+
criteria:
|
|
2046
|
+
- key: dogfooded
|
|
2047
|
+
statement: The dogfood walk reports WORKS on every path the change touches.
|
|
2048
|
+
check: { kind: evidence, evidenceKey: dogfooded }
|
|
2049
|
+
- key: verify
|
|
2050
|
+
name: Criteria verified
|
|
2051
|
+
category: completed
|
|
2052
|
+
subjectStatus: done
|
|
2053
|
+
goal: Grade every criterion of the session with its evidence, separating VERIFIED (gate or check output quoted) from NEEDS-DOGFOOD; the feature reads Shipped once a person accepts it.
|
|
2054
|
+
criteria:
|
|
2055
|
+
- key: criteria-verified
|
|
2056
|
+
statement: Every criterion of the session is graded with its evidence, and nothing unverified is reported as verified.
|
|
2057
|
+
check: { kind: judge }
|
|
2058
|
+
|
|
2059
|
+
# The dogfood run a deploy starts (staged automation
|
|
2060
|
+
# `ship-a-change-deployed`), handed to the devbox worker. A RUN of its own,
|
|
2061
|
+
# not a stage, so another agent walks what the builder built. No subject
|
|
2062
|
+
# (so no activator: the automation or a person starts it):
|
|
2063
|
+
# one deploy carries every change merged since the last one, so the run
|
|
2064
|
+
# finds the Ship a change sessions waiting at Dogfooded and grades each.
|
|
2065
|
+
- name: Dogfood a change
|
|
2066
|
+
description: Walk a deployed change in the running app as a person would and report WORKS, BROKEN or CANNOT-TELL, then grade the dogfood of each Ship a change session it covers.
|
|
2067
|
+
goalTemplate: >-
|
|
2068
|
+
Dogfood {change} in the running app ({where}) as a person would. Load the
|
|
2069
|
+
dogfood skill. Enter through the doors a person enters through, reach
|
|
2070
|
+
every state the change touches, and report each path WORKS, BROKEN or
|
|
2071
|
+
CANNOT-TELL with a screenshot or the output seen. For each Ship a change
|
|
2072
|
+
session this covers (in the same goal, waiting at Dogfooded), post the
|
|
2073
|
+
evidence dogfooded on it (passed only when every path WORKS, with the
|
|
2074
|
+
report as its detail). Never fix anything here: a BROKEN path becomes a
|
|
2075
|
+
finding on the feature, and its session goes back to Building.
|
|
2076
|
+
params:
|
|
2077
|
+
- { name: change, type: text, label: "What to dogfood (a pull request, a sha, a feature)" }
|
|
2078
|
+
- { name: where, type: text, label: "Where it runs (the lab host)", default: lab }
|
|
2079
|
+
executor: is-agent
|
|
2080
|
+
status: active
|
|
2081
|
+
criteria:
|
|
2082
|
+
- key: dogfood-walked
|
|
2083
|
+
statement: Every path the change touches was walked in the running app and reported WORKS, BROKEN or CANNOT-TELL with what was seen.
|
|
2084
|
+
check: { kind: judge }
|
|
2085
|
+
- key: dogfood-graded
|
|
2086
|
+
statement: Each Ship a change session covered got its dogfooded evidence, passed only when every path works.
|
|
2087
|
+
check: { kind: judge }
|
|
2088
|
+
|
|
1404
2089
|
onboarding:
|
|
1405
2090
|
goal: Capture the real engineering surface — the apps that are shipped, where their code lives, what runs behind them, where they deploy, and what's in flight — so the workspace mirrors what the team actually builds and runs, not a generic template.
|
|
1406
2091
|
framing: >
|
|
@@ -1447,6 +2132,7 @@ onboarding:
|
|
|
1447
2132
|
terminal right now, not what was true at kickoff.
|
|
1448
2133
|
collect:
|
|
1449
2134
|
- profileSlug: devplane_app
|
|
2135
|
+
min: 1
|
|
1450
2136
|
what: The apps that are shipped or actively being built — with where their code lives and what stack they run on.
|
|
1451
2137
|
cardinality: several
|
|
1452
2138
|
keyFields: [appName, appStatus, techStack, repoUrl]
|
|
@@ -1455,6 +2141,7 @@ onboarding:
|
|
|
1455
2141
|
cardinality: few
|
|
1456
2142
|
keyFields: [serviceType, serviceStatus, host]
|
|
1457
2143
|
- profileSlug: devplane_environment
|
|
2144
|
+
min: 1
|
|
1458
2145
|
what: The servers and deploy targets the team ships to — local through production.
|
|
1459
2146
|
cardinality: few
|
|
1460
2147
|
keyFields: [envType, host, serverProvider]
|
|
@@ -1463,41 +2150,38 @@ onboarding:
|
|
|
1463
2150
|
cardinality: several
|
|
1464
2151
|
keyFields: [packageName, packageRegistry, dependsOn]
|
|
1465
2152
|
- profileSlug: devplane_feature
|
|
2153
|
+
min: 1
|
|
1466
2154
|
what: The work in flight right now — features and work items with a status and priority.
|
|
1467
2155
|
cardinality: several
|
|
1468
2156
|
keyFields: [featureStatus, priority]
|
|
1469
|
-
- profileSlug: project
|
|
1470
|
-
what: The larger bounded bodies of work delegated to agents or the team, tied to a goal.
|
|
1471
|
-
cardinality: few
|
|
1472
|
-
keyFields: [project-status, project-goal]
|
|
1473
2157
|
openingQuestions:
|
|
1474
2158
|
- "What have you actually shipped, and what's still just planned? Give me the apps and their repos."
|
|
1475
2159
|
- "For each app — what runs behind it (services, workers), and where does it deploy?"
|
|
1476
2160
|
- "What's on your plate this week, and which of it should be delegated to agents?"
|
|
1477
|
-
doneWhen: at least one app (with a repo) + its primary deploy target + one in-flight feature
|
|
2161
|
+
doneWhen: at least one app (with a repo) + its primary deploy target + one in-flight feature captured.
|
|
1478
2162
|
|
|
1479
|
-
# App reference
|
|
2163
|
+
# App reference — the space opens its own experience: the Work overview,
|
|
2164
|
+
# built from the shared lens-page components into a sandboxed frame cell that
|
|
2165
|
+
# this template installs (`spacePackage` below → `cell:builder-workspace:home`).
|
|
2166
|
+
# It replaced DevPlane, whose surface is an iframe on a localhost URL.
|
|
1480
2167
|
app:
|
|
1481
|
-
kind:
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
title: DevPlane
|
|
2168
|
+
kind: stored
|
|
2169
|
+
cellKey: cell:builder-workspace:home
|
|
2170
|
+
title: Work
|
|
1485
2171
|
|
|
2172
|
+
# The space's code (base layer). `pnpm build:space-packages` bundles each cell
|
|
2173
|
+
# into src/space-packages.generated.ts; the pod installs it as a frame cell.
|
|
2174
|
+
spacePackage:
|
|
2175
|
+
cells:
|
|
2176
|
+
- key: home
|
|
2177
|
+
name: Work
|
|
2178
|
+
source: packages/web/src/space-packages/builder/home.tsx
|
|
2179
|
+
|
|
2180
|
+
# No DevPlane door: the space's entry is `app` above (DevPlane is a retired
|
|
2181
|
+
# surface; a sidebar item or a defaultApp naming it would be a second door).
|
|
1486
2182
|
layout:
|
|
1487
|
-
defaultApp: devplane
|
|
1488
2183
|
defaultView: Task Board
|
|
1489
2184
|
sidebarItems:
|
|
1490
|
-
- kind: app
|
|
1491
|
-
appId: devplane
|
|
1492
|
-
label: DevPlane
|
|
1493
|
-
icon: rocket
|
|
1494
|
-
surface:
|
|
1495
|
-
kind: app
|
|
1496
|
-
appId: devplane
|
|
1497
|
-
rendererType: native
|
|
1498
|
-
placement: main
|
|
1499
|
-
displayMode: full
|
|
1500
|
-
title: DevPlane
|
|
1501
2185
|
- kind: view
|
|
1502
2186
|
viewName: Apps
|
|
1503
2187
|
label: Apps
|
|
@@ -1518,6 +2202,10 @@ layout:
|
|
|
1518
2202
|
viewName: Incidents
|
|
1519
2203
|
label: Incidents
|
|
1520
2204
|
icon: alert-triangle
|
|
2205
|
+
- kind: view
|
|
2206
|
+
viewName: Service Health
|
|
2207
|
+
label: Services
|
|
2208
|
+
icon: server
|
|
1521
2209
|
|
|
1522
2210
|
bento:
|
|
1523
2211
|
viewName: Builder Home
|
|
@@ -1526,7 +2214,7 @@ bento:
|
|
|
1526
2214
|
widgetType: section-header
|
|
1527
2215
|
pos: { x: 0, y: 0, w: 12, h: 2 }
|
|
1528
2216
|
config:
|
|
1529
|
-
title:
|
|
2217
|
+
title: Dev
|
|
1530
2218
|
subtitle: Apps, packages, deployments, and delegated tasks in one lens.
|
|
1531
2219
|
color: "#7C3AED"
|
|
1532
2220
|
- kind: widget
|