@growthub/cli 0.3.53 → 0.3.54

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.
Files changed (34) hide show
  1. package/assets/worker-kits/growthub-postiz-social-v1/.env.example +18 -0
  2. package/assets/worker-kits/growthub-postiz-social-v1/QUICKSTART.md +136 -0
  3. package/assets/worker-kits/growthub-postiz-social-v1/brands/NEW-CLIENT.md +67 -0
  4. package/assets/worker-kits/growthub-postiz-social-v1/brands/_template/brand-kit.md +120 -0
  5. package/assets/worker-kits/growthub-postiz-social-v1/brands/growthub/brand-kit.md +117 -0
  6. package/assets/worker-kits/growthub-postiz-social-v1/bundles/growthub-postiz-social-v1.json +52 -0
  7. package/assets/worker-kits/growthub-postiz-social-v1/docs/ai-caption-layer.md +118 -0
  8. package/assets/worker-kits/growthub-postiz-social-v1/docs/bullmq-queue-layer.md +157 -0
  9. package/assets/worker-kits/growthub-postiz-social-v1/docs/platform-coverage.md +97 -0
  10. package/assets/worker-kits/growthub-postiz-social-v1/docs/postiz-fork-integration.md +143 -0
  11. package/assets/worker-kits/growthub-postiz-social-v1/examples/analytics-brief-sample.md +125 -0
  12. package/assets/worker-kits/growthub-postiz-social-v1/examples/client-proposal-sample.md +127 -0
  13. package/assets/worker-kits/growthub-postiz-social-v1/examples/content-calendar-sample.md +75 -0
  14. package/assets/worker-kits/growthub-postiz-social-v1/examples/social-campaign-sample.md +104 -0
  15. package/assets/worker-kits/growthub-postiz-social-v1/growthub-meta/README.md +128 -0
  16. package/assets/worker-kits/growthub-postiz-social-v1/growthub-meta/kit-standard.md +113 -0
  17. package/assets/worker-kits/growthub-postiz-social-v1/kit.json +104 -0
  18. package/assets/worker-kits/growthub-postiz-social-v1/output/README.md +56 -0
  19. package/assets/worker-kits/growthub-postiz-social-v1/output-standards.md +127 -0
  20. package/assets/worker-kits/growthub-postiz-social-v1/runtime-assumptions.md +159 -0
  21. package/assets/worker-kits/growthub-postiz-social-v1/setup/check-deps.sh +117 -0
  22. package/assets/worker-kits/growthub-postiz-social-v1/setup/clone-fork.sh +83 -0
  23. package/assets/worker-kits/growthub-postiz-social-v1/setup/verify-env.mjs +99 -0
  24. package/assets/worker-kits/growthub-postiz-social-v1/skills.md +277 -0
  25. package/assets/worker-kits/growthub-postiz-social-v1/templates/analytics-brief.md +123 -0
  26. package/assets/worker-kits/growthub-postiz-social-v1/templates/caption-copy-deck.md +127 -0
  27. package/assets/worker-kits/growthub-postiz-social-v1/templates/client-proposal.md +139 -0
  28. package/assets/worker-kits/growthub-postiz-social-v1/templates/content-calendar.md +65 -0
  29. package/assets/worker-kits/growthub-postiz-social-v1/templates/platform-publishing-plan.md +112 -0
  30. package/assets/worker-kits/growthub-postiz-social-v1/templates/scheduling-manifest.md +83 -0
  31. package/assets/worker-kits/growthub-postiz-social-v1/templates/social-campaign-brief.md +111 -0
  32. package/assets/worker-kits/growthub-postiz-social-v1/validation-checklist.md +79 -0
  33. package/assets/worker-kits/growthub-postiz-social-v1/workers/postiz-social-operator/CLAUDE.md +287 -0
  34. package/package.json +1 -1
@@ -0,0 +1,65 @@
1
+ # Content Calendar
2
+
3
+ <!-- Client: [client-slug] | Project: [project-slug] | Version: v1 | Date: YYYY-MM-DD -->
4
+
5
+ ---
6
+
7
+ ## Calendar Header
8
+
9
+ | Field | Value |
10
+ |---|---|
11
+ | Client | <!-- client name --> |
12
+ | Campaign | <!-- campaign name --> |
13
+ | Period | <!-- YYYY-MM-DD to YYYY-MM-DD --> |
14
+ | Platforms | <!-- comma-separated --> |
15
+ | Total Posts | <!-- N --> |
16
+ | Generated By | postiz-social-operator |
17
+
18
+ ---
19
+
20
+ ## Posting Cadence Summary
21
+
22
+ | Platform | Posts/Week | Best Times | Content Mix |
23
+ |---|---|---|---|
24
+ | <!-- platform --> | <!-- e.g., 3 --> | <!-- e.g., Mon/Wed/Fri 9am ET --> | <!-- e.g., 50% educational, 30% promotional, 20% community --> |
25
+
26
+ ---
27
+
28
+ ## Content Calendar
29
+
30
+ | Date | Day | Platform | Theme Pillar | Post Type | Caption Preview (first 100 chars) | CTA | Media Notes | Status |
31
+ |---|---|---|---|---|---|---|---|---|
32
+ | <!-- YYYY-MM-DD --> | <!-- Mon --> | <!-- instagram --> | <!-- Industry Insights --> | <!-- image --> | <!-- First 100 characters of caption A... --> | <!-- Link in bio --> | <!-- 1080×1080 static image, brand colors --> | draft |
33
+ | | | | | | | | | |
34
+ | | | | | | | | | |
35
+ | | | | | | | | | |
36
+ | | | | | | | | | |
37
+
38
+ <!-- Add one row per scheduled post. Use platform slugs from docs/platform-coverage.md. -->
39
+ <!-- Status values: draft | approved | scheduled | published -->
40
+
41
+ ---
42
+
43
+ ## Theme Distribution
44
+
45
+ | Pillar | Posts | % of Calendar |
46
+ |---|---|---|
47
+ | <!-- Industry Insights --> | <!-- 12 --> | <!-- 40% --> |
48
+ | <!-- Product Value --> | <!-- 9 --> | <!-- 30% --> |
49
+ | <!-- Social Proof --> | <!-- 6 --> | <!-- 20% --> |
50
+ | <!-- Community --> | <!-- 3 --> | <!-- 10% --> |
51
+
52
+ ---
53
+
54
+ ## Platform Distribution
55
+
56
+ | Platform | Total Posts | % of Calendar |
57
+ |---|---|---|
58
+ | <!-- instagram --> | <!-- --> | <!-- --> |
59
+ | <!-- linkedin --> | <!-- --> | <!-- --> |
60
+
61
+ ---
62
+
63
+ ## Notes
64
+
65
+ <!-- Any campaign-level constraints, blackout dates, or scheduling dependencies. -->
@@ -0,0 +1,112 @@
1
+ # Platform Publishing Plan
2
+
3
+ <!-- Client: [client-slug] | Project: [project-slug] | Version: v1 | Date: YYYY-MM-DD -->
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ | Field | Value |
10
+ |---|---|
11
+ | Client | <!-- client name --> |
12
+ | Campaign | <!-- campaign name --> |
13
+ | Platforms in Scope | <!-- N platforms --> |
14
+ | Plan Period | <!-- YYYY-MM-DD to YYYY-MM-DD --> |
15
+
16
+ ---
17
+
18
+ ## Per-Platform Publishing Specs
19
+
20
+ <!-- One section per platform. Only include platforms selected in the Social Campaign Brief. -->
21
+
22
+ ---
23
+
24
+ ### Platform: <!-- instagram -->
25
+
26
+ | Attribute | Spec |
27
+ |---|---|
28
+ | Platform ID | <!-- instagram --> |
29
+ | Posting Frequency | <!-- e.g., 5x per week --> |
30
+ | Best Posting Times | <!-- e.g., Mon/Wed/Fri: 9am–11am ET; Tue/Thu: 6pm–8pm ET --> |
31
+ | Primary Content Format | <!-- e.g., Static image (80%), Reel (20%) --> |
32
+ | Character Limit | <!-- 2,200 (aim for ≤150 above fold) --> |
33
+ | Hashtag Count | <!-- 3–5 primary hashtags --> |
34
+ | Caption Tone | <!-- e.g., Visual-first, story-driven, aspirational --> |
35
+ | Link Strategy | <!-- e.g., Link in bio only; rotate per campaign phase --> |
36
+ | Media Specs (Image) | <!-- 1080×1080 (square), 1080×1350 (portrait); ≤30MB, JPG/PNG --> |
37
+ | Media Specs (Video) | <!-- 1080×1920 (Reels); max 90 seconds; MP4 preferred --> |
38
+ | Media Specs (Carousel) | <!-- Up to 10 slides; 1080×1080 each --> |
39
+ | Account | <!-- @account_handle --> |
40
+
41
+ ---
42
+
43
+ ### Platform: <!-- linkedin -->
44
+
45
+ | Attribute | Spec |
46
+ |---|---|
47
+ | Platform ID | <!-- linkedin --> |
48
+ | Posting Frequency | <!-- e.g., 3x per week --> |
49
+ | Best Posting Times | <!-- e.g., Tue/Wed/Thu: 8am–10am ET --> |
50
+ | Primary Content Format | <!-- e.g., Text + image (60%), Document/carousel (30%), Video (10%) --> |
51
+ | Character Limit | <!-- 3,000 (optimal engagement: 150–300 chars for opening hook) --> |
52
+ | Hashtag Count | <!-- 3–5 relevant professional hashtags --> |
53
+ | Caption Tone | <!-- e.g., Professional, insight-driven, no jargon --> |
54
+ | Link Strategy | <!-- e.g., Link in first comment (reduces algorithmic suppression of link posts) --> |
55
+ | Media Specs (Image) | <!-- 1200×627 (landscape), PNG/JPG; ≤5MB --> |
56
+ | Media Specs (Document) | <!-- PDF up to 300 pages, 100MB max --> |
57
+ | Account | <!-- company page or personal profile --> |
58
+
59
+ ---
60
+
61
+ ### Platform: <!-- tiktok -->
62
+
63
+ | Attribute | Spec |
64
+ |---|---|
65
+ | Platform ID | <!-- tiktok --> |
66
+ | Posting Frequency | <!-- e.g., 5x per week --> |
67
+ | Best Posting Times | <!-- e.g., Mon–Fri: 7am–9am ET and 7pm–9pm ET --> |
68
+ | Primary Content Format | <!-- Video only --> |
69
+ | Character Limit | <!-- 2,200 (optimal: first 150 characters before "more" fold) --> |
70
+ | Hashtag Count | <!-- 3–6 hashtags mixing trending and niche --> |
71
+ | Caption Tone | <!-- Casual, trend-aware, authentic, hook-first --> |
72
+ | Link Strategy | <!-- Bio link only (Linktree or equivalent) --> |
73
+ | Media Specs (Video) | <!-- 1080×1920 (9:16); 15 seconds – 10 minutes; MP4/MOV; ≤500MB --> |
74
+ | Account | <!-- @tiktok_handle --> |
75
+
76
+ ---
77
+
78
+ ### Platform: <!-- twitter (X) -->
79
+
80
+ | Attribute | Spec |
81
+ |---|---|
82
+ | Platform ID | <!-- twitter --> |
83
+ | Posting Frequency | <!-- e.g., daily --> |
84
+ | Best Posting Times | <!-- e.g., 8am–10am ET and 12pm–2pm ET on weekdays --> |
85
+ | Primary Content Format | <!-- Text (50%), Text + image (40%), Thread (10%) --> |
86
+ | Character Limit | <!-- 280 characters (aim ≤240 for RT space) --> |
87
+ | Hashtag Count | <!-- 1–2 hashtags maximum --> |
88
+ | Caption Tone | <!-- Concise, punchy, opinion-forward, conversation-sparking --> |
89
+ | Link Strategy | <!-- Direct URL in tweet --> |
90
+ | Media Specs (Image) | <!-- 1200×675 (landscape) or 1200×1200 (square); ≤5MB; JPG/PNG/GIF --> |
91
+ | Account | <!-- @twitter_handle --> |
92
+
93
+ ---
94
+
95
+ ## Content Mix by Platform
96
+
97
+ | Platform | Educational | Promotional | Community | Entertainment |
98
+ |---|---|---|---|---|
99
+ | <!-- instagram --> | <!-- 40% --> | <!-- 30% --> | <!-- 20% --> | <!-- 10% --> |
100
+ | <!-- linkedin --> | <!-- 50% --> | <!-- 30% --> | <!-- 20% --> | <!-- 0% --> |
101
+ | <!-- tiktok --> | <!-- 30% --> | <!-- 20% --> | <!-- 10% --> | <!-- 40% --> |
102
+ | <!-- twitter --> | <!-- 40% --> | <!-- 20% --> | <!-- 30% --> | <!-- 10% --> |
103
+
104
+ ---
105
+
106
+ ## Cross-Platform Coordination
107
+
108
+ <!-- Describe how content is adapted across platforms rather than duplicated. -->
109
+
110
+ | Source Content | Instagram Adaptation | LinkedIn Adaptation | TikTok Adaptation | X Adaptation |
111
+ |---|---|---|---|---|
112
+ | <!-- Blog post / case study --> | <!-- Visual pull quote card --> | <!-- Professional insight thread --> | <!-- Talking head video summary --> | <!-- 3-tweet thread with key stats --> |
@@ -0,0 +1,83 @@
1
+ # Scheduling Manifest
2
+
3
+ <!-- Client: [client-slug] | Project: [project-slug] | Version: v1 | Date: YYYY-MM-DD -->
4
+ <!-- Execution Mode: local-fork | agent-only (dry-run) -->
5
+
6
+ ---
7
+
8
+ ## Manifest Overview
9
+
10
+ | Field | Value |
11
+ |---|---|
12
+ | Client | <!-- client name --> |
13
+ | Campaign | <!-- campaign name --> |
14
+ | Workspace ID | <!-- Postiz workspace UUID or "placeholder" for dry-run --> |
15
+ | Postiz API URL | <!-- http://localhost:3000 or hosted URL --> |
16
+ | Total Posts | <!-- N --> |
17
+ | Schedule Period | <!-- YYYY-MM-DD to YYYY-MM-DD --> |
18
+ | Generated By | postiz-social-operator |
19
+ | Dry Run | <!-- true / false --> |
20
+
21
+ ---
22
+
23
+ ## How to Submit (Local-Fork Mode)
24
+
25
+ ```bash
26
+ # Submit manifest to Postiz API
27
+ curl -X POST http://localhost:3000/api/v1/posts/bulk \
28
+ -H "Content-Type: application/json" \
29
+ -H "Authorization: Bearer <your-postiz-jwt-token>" \
30
+ -d @scheduling-manifest.json
31
+ ```
32
+
33
+ ---
34
+
35
+ ## scheduling-manifest.json
36
+
37
+ ```json
38
+ {
39
+ "postizSchedulingManifest": {
40
+ "version": "1.0",
41
+ "workspaceId": "<postiz-workspace-uuid>",
42
+ "generatedAt": "<ISO-8601-timestamp>",
43
+ "dryRun": false,
44
+ "posts": [
45
+ {
46
+ "postId": "<client-slug>-<YYYYMMDD>-<platform>-001",
47
+ "platform": "<postiz-platform-id>",
48
+ "scheduledAt": "<ISO-8601-timestamp-with-timezone>",
49
+ "content": "<selected caption variant — full text>",
50
+ "mediaAssets": [],
51
+ "tags": ["<hashtag1>", "<hashtag2>"],
52
+ "status": "pending"
53
+ }
54
+ ]
55
+ }
56
+ }
57
+ ```
58
+
59
+ ---
60
+
61
+ ## Post Schedule Table
62
+
63
+ | Post ID | Platform | Scheduled At | Caption Variant | Media Assets | Status |
64
+ |---|---|---|---|---|---|
65
+ | <!-- client-slug-20260415-instagram-001 --> | <!-- instagram --> | <!-- 2026-04-15T09:00:00-05:00 --> | <!-- A --> | <!-- none / [asset-filename.jpg] --> | pending |
66
+ | | | | | | |
67
+ | | | | | | |
68
+
69
+ <!-- One row per post. postId must follow: <client-slug>-<YYYYMMDD>-<platform>-<sequence> -->
70
+ <!-- scheduledAt must be ISO 8601 with timezone: YYYY-MM-DDTHH:MM:SS±HH:MM -->
71
+ <!-- Platform IDs from docs/platform-coverage.md -->
72
+ <!-- Caption variant references the selected variant (A/B/C) from the Caption Copy Deck -->
73
+
74
+ ---
75
+
76
+ ## Post-Submission Verification
77
+
78
+ After submitting the manifest to the Postiz API:
79
+
80
+ 1. Confirm all posts appear in the Postiz admin UI → Calendar view
81
+ 2. Verify `scheduledAt` timestamps match the content calendar exactly
82
+ 3. Check that media assets are linked correctly (if applicable)
83
+ 4. Set status to `scheduled` in the Content Calendar for each confirmed post
@@ -0,0 +1,111 @@
1
+ # Social Campaign Brief
2
+
3
+ <!-- Client: [client-slug] | Project: [project-slug] | Version: v1 | Date: YYYY-MM-DD -->
4
+
5
+ ---
6
+
7
+ ## Project Overview
8
+
9
+ | Field | Value |
10
+ |---|---|
11
+ | Client | <!-- client name --> |
12
+ | Campaign Name | <!-- campaign name --> |
13
+ | Campaign Objective | <!-- brand awareness / lead generation / engagement / product launch / community growth --> |
14
+ | Campaign Window | <!-- YYYY-MM-DD to YYYY-MM-DD --> |
15
+ | Total Duration | <!-- e.g., 30 days --> |
16
+ | Posting Cadence | <!-- e.g., 3x per week per platform --> |
17
+ | Target Platforms | <!-- comma-separated list --> |
18
+ | Execution Mode | <!-- local-fork / agent-only / hybrid --> |
19
+
20
+ ---
21
+
22
+ ## Campaign Objective
23
+
24
+ <!-- One paragraph stating the primary goal, what success looks like, and what problem the campaign solves for the client. -->
25
+
26
+ ---
27
+
28
+ ## Target Platforms
29
+
30
+ | Platform | Audience Fit | Content Format | Primary Goal |
31
+ |---|---|---|---|
32
+ | <!-- platform --> | <!-- why this platform fits the audience --> | <!-- image / video / carousel / text --> | <!-- specific platform goal --> |
33
+
34
+ ---
35
+
36
+ ## Audience Profile
37
+
38
+ ### Primary Audience
39
+
40
+ | Attribute | Description |
41
+ |---|---|
42
+ | Age Range | <!-- e.g., 25–40 --> |
43
+ | Interests | <!-- e.g., entrepreneurship, SaaS, productivity --> |
44
+ | Platforms Most Active | <!-- e.g., LinkedIn, X --> |
45
+ | Pain Points | <!-- what they struggle with --> |
46
+ | Content Preferences | <!-- educational / entertaining / inspirational / promotional --> |
47
+
48
+ ### Secondary Audience
49
+
50
+ | Attribute | Description |
51
+ |---|---|
52
+ | Age Range | <!-- --> |
53
+ | Interests | <!-- --> |
54
+ | Platforms Most Active | <!-- --> |
55
+
56
+ ---
57
+
58
+ ## KPI Targets
59
+
60
+ | Metric | Target | Measurement Method |
61
+ |---|---|---|
62
+ | Impressions | <!-- e.g., 50,000 / month --> | Platform native analytics |
63
+ | Engagement Rate | <!-- e.g., ≥3% --> | (likes + comments + shares) / impressions |
64
+ | Follower Growth | <!-- e.g., +500 net new followers --> | Platform native |
65
+ | Link Clicks | <!-- e.g., 200 clicks to landing page --> | UTM tracking / bio link |
66
+ | Conversions | <!-- e.g., 20 demo requests --> | CRM / tracking pixel |
67
+
68
+ ---
69
+
70
+ ## Content Theme Pillars
71
+
72
+ <!-- Define 3–5 recurring themes that anchor the content calendar. Each pillar should be a distinct topic area that aligns with the campaign objective. -->
73
+
74
+ | Pillar | Theme | Content Mix | Example Topics |
75
+ |---|---|---|---|
76
+ | 1 | <!-- e.g., Industry Insights --> | <!-- % of calendar --> | <!-- e.g., "Top 5 trends in...", "What the data shows..." --> |
77
+ | 2 | <!-- e.g., Product Value --> | <!-- % --> | <!-- --> |
78
+ | 3 | <!-- e.g., Social Proof --> | <!-- % --> | <!-- --> |
79
+ | 4 | <!-- e.g., Behind the Scenes --> | <!-- % --> | <!-- --> |
80
+ | 5 | <!-- e.g., Community Engagement --> | <!-- % --> | <!-- optional --> |
81
+
82
+ ---
83
+
84
+ ## Brand Voice
85
+
86
+ | Attribute | Spec |
87
+ |---|---|
88
+ | Tone | <!-- e.g., Professional but approachable, data-driven, never salesy --> |
89
+ | Words to Use | <!-- e.g., "build", "grow", "automate", "team" --> |
90
+ | Words to Avoid | <!-- e.g., "cheap", "hack", "guru" --> |
91
+ | Emoji Usage | <!-- e.g., Minimal — max 2 per caption on LinkedIn; more casual on Instagram --> |
92
+ | CTA Style | <!-- e.g., Direct verbs: "Start today", "Learn more", "Join us" --> |
93
+
94
+ ---
95
+
96
+ ## Competitor Reference Accounts
97
+
98
+ | Platform | Account | Why Reference |
99
+ |---|---|---|
100
+ | <!-- --> | <!-- --> | <!-- e.g., strong engagement format, industry leader --> |
101
+
102
+ ---
103
+
104
+ ## Deliverables Scope
105
+
106
+ - [ ] Content Calendar (<!-- N --> posts over <!-- N --> days)
107
+ - [ ] Platform Publishing Plan
108
+ - [ ] Caption Copy Deck (A/B/C variants per post)
109
+ - [ ] Scheduling Manifest
110
+ - [ ] Analytics Brief (end of campaign)
111
+ - [ ] Client Proposal
@@ -0,0 +1,79 @@
1
+ # Validation Checklist — growthub-postiz-social-v1
2
+
3
+ **Run through this checklist before starting every operator session and before delivering any artifact package.**
4
+
5
+ ---
6
+
7
+ ## Pre-Session Checklist
8
+
9
+ ### Environment Gate
10
+
11
+ - [ ] Node.js 18+ is installed (`node --version` returns 18+)
12
+ - [ ] Docker is installed and running (`docker --version`)
13
+ - [ ] `docker compose` command is available
14
+ - [ ] Git is installed (`git --version`)
15
+
16
+ ### Local-Fork Mode (skip if agent-only)
17
+
18
+ - [ ] Postiz fork is cloned at `POSTIZ_FORK_PATH` (default: `~/postiz-app`)
19
+ - [ ] `docker compose ps` shows `postiz`, `postiz-postgres`, `postiz-redis` all running
20
+ - [ ] `curl http://localhost:3000/api/healthcheck` returns a 200 response
21
+ - [ ] At least one platform integration is connected and authorized in the Postiz admin UI
22
+ - [ ] `POSTIZ_WORKSPACE_ID` is set in `.env` (required for scheduling manifest submission)
23
+
24
+ ### Agent-Only Mode (skip if local-fork)
25
+
26
+ - [ ] Mode is confirmed with the user and documented as `agent-only` at the top of all outputs
27
+ - [ ] Scheduling manifests are marked as `dry-run: true` in the manifest header
28
+
29
+ ### Context
30
+
31
+ - [ ] Brand kit exists for the active client (`brands/<client-slug>/brand-kit.md`)
32
+ - [ ] Campaign objective is confirmed (one of: brand awareness / lead generation / engagement / product launch / community growth)
33
+ - [ ] Target platforms are confirmed and in the supported list (`docs/platform-coverage.md`)
34
+ - [ ] Campaign timeframe and posting cadence are confirmed
35
+
36
+ ---
37
+
38
+ ## Pre-Delivery Checklist
39
+
40
+ ### Content Calendar
41
+
42
+ - [ ] All calendar rows have dates within the campaign window
43
+ - [ ] All platform slugs match `docs/platform-coverage.md`
44
+ - [ ] All post types are valid for their target platform
45
+ - [ ] Every row has a non-empty CTA
46
+ - [ ] Media asset notes are present for all image/video/carousel posts
47
+
48
+ ### Caption Copy Deck
49
+
50
+ - [ ] All 3 variants (A/B/C) are present for every post entry
51
+ - [ ] All captions respect platform character limits
52
+ - [ ] Hashtag counts are within platform-recommended ranges
53
+ - [ ] No placeholder text remains (no `[INSERT CAPTION HERE]` style fragments)
54
+
55
+ ### Scheduling Manifest
56
+
57
+ - [ ] All `scheduledAt` timestamps are ISO 8601 format with timezone offset
58
+ - [ ] All `postId` values follow the naming convention
59
+ - [ ] `workspaceId` is present (or `"placeholder"` with `dry-run: true` in agent-only mode)
60
+ - [ ] Every post in the manifest has a corresponding entry in the ContentCalendar
61
+
62
+ ### Output Files
63
+
64
+ - [ ] All files follow the naming convention (`ClientSlug_OutputType_v<N>_<YYYYMMDD>.md`)
65
+ - [ ] All files are saved to `output/<client-slug>/<project-slug>/`
66
+ - [ ] Deliverable is logged in the brand kit DELIVERABLES LOG
67
+ - [ ] No API keys, tokens, or credentials appear in any output file
68
+
69
+ ---
70
+
71
+ ## Kit Integrity Checklist (run after kit changes)
72
+
73
+ - [ ] `kit.json` is valid JSON with `schemaVersion: 2`
74
+ - [ ] All paths in `frozenAssetPaths` exist on disk
75
+ - [ ] All paths in `outputStandard.requiredPaths` exist on disk
76
+ - [ ] Bundle manifest `bundles/growthub-postiz-social-v1.json` exists and matches kit.json
77
+ - [ ] `bundle.kitId` in bundle manifest matches `kit.id` in kit.json
78
+ - [ ] `bundle.workerId` in bundle manifest matches `entrypoint.workerId` in kit.json
79
+ - [ ] All paths in `requiredFrozenAssets` in bundle manifest exist on disk