@easysociable/cli 0.1.2 → 0.1.4

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 (148) hide show
  1. package/README.md +32 -21
  2. package/{skills/easysociable-content → content-engine}/scripts/starter.mjs +3 -1
  3. package/{skills/easysociable-content → content-engine}/scripts/workbench.mjs +13 -8
  4. package/{skills/easysociable-content → content-engine}/starter/CLAUDE.md +217 -128
  5. package/{skills/easysociable-content → content-engine}/starter/engine.json +3 -0
  6. package/content-engine/starter/needs/README.md +38 -0
  7. package/content-engine/starter/needs/_index.md +31 -0
  8. package/content-engine/starter/needs/_template.md +24 -0
  9. package/content-engine/starter/needs/entries/README.md +5 -0
  10. package/content-engine/starter/products/README.md +38 -0
  11. package/content-engine/starter/products/_index.md +24 -0
  12. package/content-engine/starter/products/_template.md +56 -0
  13. package/content-engine/starter/products/entries/P-001-easysociable.md +150 -0
  14. package/content-engine/starter/profiles/_index.md +16 -0
  15. package/{skills/easysociable-content → content-engine}/starter/profiles/default/README.md +4 -1
  16. package/content-engine/starter/profiles/default/boundaries.md +14 -0
  17. package/content-engine/starter/profiles/default/expression.md +18 -0
  18. package/content-engine/starter/profiles/default/lanes.md +12 -0
  19. package/content-engine/starter/profiles/default/stories.md +15 -0
  20. package/{skills/easysociable-content → content-engine}/starter/profiles/default/voice.md +14 -0
  21. package/content-engine/starter/recommendations/README.md +21 -0
  22. package/content-engine/starter/recommendations/_index.md +21 -0
  23. package/content-engine/starter/recommendations/_template.md +44 -0
  24. package/{skills/easysociable-content → content-engine}/starter/runs/_template/brief.md +1 -1
  25. package/{skills/easysociable-content → content-engine}/starter/runs/_template/pack.md +15 -7
  26. package/{skills/easysociable-content → content-engine}/starter/runs/_template/packet.md +6 -0
  27. package/{skills/easysociable-content → content-engine}/starter/swipe/_template.md +3 -1
  28. package/content-engine/starter/topics/README.md +21 -0
  29. package/{skills/easysociable-content → content-engine}/starter/topics/_index.md +12 -5
  30. package/content-engine/starter/topics/_template-item.md +103 -0
  31. package/{skills/easysociable-content → content-engine}/starter/topics/scoring.md +55 -4
  32. package/content-engine/workbench/__pycache__/build.cpython-310.pyc +0 -0
  33. package/{skills/easysociable-content → content-engine}/workbench/build.py +306 -97
  34. package/{skills/easysociable-content → content-engine}/workbench/serve.py +0 -0
  35. package/{skills/easysociable-content → content-engine}/workbench/template.html +173 -27
  36. package/dist/easysociable.js +629 -142
  37. package/dist/easysociable.js.map +1 -1
  38. package/package.json +15 -15
  39. package/skills/ONBOARDING.md +21 -18
  40. package/skills/easysociable-content/SKILL.md +104 -98
  41. package/skills/easysociable-content/workflows/INTERVIEW.md +70 -0
  42. package/skills/easysociable-content/workflows/NEEDS.md +82 -0
  43. package/skills/easysociable-slideshow/SKILL.md +79 -44
  44. package/skills/easysociable-slideshow/references/ARC.md +44 -0
  45. package/skills/easysociable-slideshow/references/CONTENT_PACK.md +34 -6
  46. package/skills/easysociable-slideshow/workflows/CREATE_RUN.md +24 -5
  47. package/skills/easysociable-slideshow/workflows/OUT_OF_SCOPE.md +3 -0
  48. package/skills/easysociable-template/SKILL.md +29 -30
  49. package/skills/easysociable-template/references/CATALOG_METADATA.md +23 -20
  50. package/skills/easysociable-template/references/DESIGN_V2_1.md +53 -2
  51. package/skills/easysociable-template/references/GATEWAY.md +7 -2
  52. package/skills/easysociable-template/references/PLATFORM_SPECS.md +11 -3
  53. package/skills/easysociable-template/references/THEME_TOKENS.md +1 -1
  54. package/skills/easysociable-template/references/fixtures/image-reference.design-plan.json +74 -0
  55. package/skills/easysociable-template/references/fixtures/image-reference.visual-qa.json +28 -0
  56. package/skills/easysociable-template/scripts/generate-theme-from-hex.mjs +0 -0
  57. package/skills/easysociable-template/scripts/validate-design-v2.mjs +97 -0
  58. package/skills/easysociable-template/workflows/ASSET_PLAN.md +2 -1
  59. package/skills/easysociable-template/workflows/AUTHORING_FROM_BRIEF.md +4 -4
  60. package/skills/easysociable-template/workflows/AUTHORING_FROM_IMAGE.md +66 -16
  61. package/skills/easysociable-template/workflows/AUTHORING_STUDIO.md +28 -15
  62. package/skills/easysociable-template/workflows/DESIGN_BRIEF.md +4 -3
  63. package/skills/easysociable-template/workflows/FILL_AND_RENDER.md +4 -83
  64. package/skills/easysociable-template/workflows/MULTI_PLATFORM_FAMILY.md +81 -0
  65. package/skills/easysociable-template/workflows/OUT_OF_SCOPE.md +3 -2
  66. package/skills/easysociable-template/workflows/PUBLISH_FROM_DRAFT.md +1 -1
  67. package/skills/easysociable-template/workflows/VISUAL_QA.md +10 -0
  68. package/skills/easysociable-content/INSTALL.md +0 -60
  69. package/skills/easysociable-content/platforms/claude.md +0 -4
  70. package/skills/easysociable-content/platforms/codex.md +0 -4
  71. package/skills/easysociable-content/platforms/hermes.md +0 -4
  72. package/skills/easysociable-content/platforms/openclaw.md +0 -4
  73. package/skills/easysociable-content/references/CLI.md +0 -40
  74. package/skills/easysociable-content/references/CONTRACT_SYNC.md +0 -42
  75. package/skills/easysociable-content/references/MCP.md +0 -15
  76. package/skills/easysociable-content/references/PAGE_PACK.md +0 -129
  77. package/skills/easysociable-content/references/PLATFORM_GUIDE.md +0 -36
  78. package/skills/easysociable-content/references/RUN_LAYOUT.md +0 -73
  79. package/skills/easysociable-content/references/TROUBLESHOOTING.md +0 -13
  80. package/skills/easysociable-content/references/VAULT.md +0 -40
  81. package/skills/easysociable-content/references/VOICE.md +0 -16
  82. package/skills/easysociable-content/scripts/package-skill.mjs +0 -49
  83. package/skills/easysociable-content/scripts/setup.mjs +0 -200
  84. package/skills/easysociable-content/scripts/setup.test.mjs +0 -82
  85. package/skills/easysociable-content/starter/discovery/README.md +0 -18
  86. package/skills/easysociable-content/starter/discovery/_index.md +0 -27
  87. package/skills/easysociable-content/starter/discovery/_template.md +0 -41
  88. package/skills/easysociable-content/starter/profiles/_index.md +0 -13
  89. package/skills/easysociable-content/starter/topics/README.md +0 -25
  90. package/skills/easysociable-content/starter/topics/WATCHLIST.md +0 -65
  91. package/skills/easysociable-content/starter/topics/_template-item.md +0 -90
  92. package/skills/easysociable-content/starter/topics/watchlists/README.md +0 -10
  93. package/skills/easysociable-content/starter/topics/watchlists/_shared.md +0 -14
  94. package/skills/easysociable-content/starter/topics/watchlists/default.md +0 -6
  95. package/skills/easysociable-content/workflows/ANALYSIS_AND_COVERAGE.md +0 -17
  96. package/skills/easysociable-content/workflows/CONTENT_EXPORT.md +0 -24
  97. package/skills/easysociable-content/workflows/GETTING_STARTED.md +0 -40
  98. package/skills/easysociable-content/workflows/MCP_FIRST.md +0 -5
  99. package/skills/easysociable-content/workflows/OUT_OF_SCOPE.md +0 -18
  100. package/skills/easysociable-content/workflows/PACK_AUTHORING.md +0 -42
  101. package/skills/easysociable-content/workflows/SWIPE_CAPTURE.md +0 -18
  102. package/skills/easysociable-content/workflows/TOPIC_DRAFT.md +0 -29
  103. package/skills/easysociable-content/workflows/WORKING_DRAFT.md +0 -19
  104. /package/{skills/easysociable-content → content-engine}/fixtures/golden-run-en/draft.md +0 -0
  105. /package/{skills/easysociable-content → content-engine}/fixtures/golden-run-en/idea.md +0 -0
  106. /package/{skills/easysociable-content → content-engine}/fixtures/golden-run-en/pack-tiktok.json +0 -0
  107. /package/{skills/easysociable-content → content-engine}/scripts/contracts.mjs +0 -0
  108. /package/{skills/easysociable-content → content-engine}/scripts/export-contracts.mjs +0 -0
  109. /package/{skills/easysociable-content → content-engine}/scripts/fixture.test.mjs +0 -0
  110. /package/{skills/easysociable-content → content-engine}/scripts/validate-export.mjs +0 -0
  111. /package/{skills/easysociable-content → content-engine}/scripts/validate-pack.mjs +0 -0
  112. /package/{skills/easysociable-content → content-engine}/scripts/validate-run.mjs +0 -0
  113. /package/{skills/easysociable-content → content-engine}/scripts/validate.test.mjs +0 -0
  114. /package/{skills/easysociable-content → content-engine}/starter/accounts/README.md +0 -0
  115. /package/{skills/easysociable-content → content-engine}/starter/accounts/_index.md +0 -0
  116. /package/{skills/easysociable-content → content-engine}/starter/accounts/overrides/README.md +0 -0
  117. /package/{skills/easysociable-content → content-engine}/starter/exports/README.md +0 -0
  118. /package/{skills/easysociable-content → content-engine}/starter/inbox/README.md +0 -0
  119. /package/{skills/easysociable-content → content-engine}/starter/inbox/_index.md +0 -0
  120. /package/{skills/easysociable-content → content-engine}/starter/inbox/entries/README.md +0 -0
  121. /package/{skills/easysociable-content → content-engine}/starter/platforms/README.md +0 -0
  122. /package/{skills/easysociable-content → content-engine}/starter/platforms/ig.md +0 -0
  123. /package/{skills/easysociable-content → content-engine}/starter/platforms/instagram.md +0 -0
  124. /package/{skills/easysociable-content → content-engine}/starter/platforms/linkedin.md +0 -0
  125. /package/{skills/easysociable-content → content-engine}/starter/platforms/threads.md +0 -0
  126. /package/{skills/easysociable-content → content-engine}/starter/platforms/tiktok.md +0 -0
  127. /package/{skills/easysociable-content → content-engine}/starter/platforms/x.md +0 -0
  128. /package/{skills/easysociable-content → content-engine}/starter/platforms/xiaohongshu.md +0 -0
  129. /package/{skills/easysociable-content → content-engine}/starter/profiles/default/audience.md +0 -0
  130. /package/{skills/easysociable-content → content-engine}/starter/profiles/default/pillars.md +0 -0
  131. /package/{skills/easysociable-content → content-engine}/starter/published/_index.md +0 -0
  132. /package/{skills/easysociable-content → content-engine}/starter/raw/README.md +0 -0
  133. /package/{skills/easysociable-content → content-engine}/starter/raw/_index.md +0 -0
  134. /package/{skills/easysociable-content → content-engine}/starter/runs/README.md +0 -0
  135. /package/{skills/easysociable-content → content-engine}/starter/runs/_index.md +0 -0
  136. /package/{skills/easysociable-content → content-engine}/starter/runs/_template/draft.md +0 -0
  137. /package/{skills/easysociable-content → content-engine}/starter/runs/_template/editor.md +0 -0
  138. /package/{skills/easysociable-content → content-engine}/starter/runs/_template/feedback.md +0 -0
  139. /package/{skills/easysociable-content → content-engine}/starter/runs/_template/idea.md +0 -0
  140. /package/{skills/easysociable-content → content-engine}/starter/runs/_template/rubric.md +0 -0
  141. /package/{skills/easysociable-content → content-engine}/starter/swipe/_index.md +0 -0
  142. /package/{skills/easysociable-content → content-engine}/starter/topics/items/README.md +0 -0
  143. /package/{skills/easysociable-content → content-engine}/starter/wiki/README.md +0 -0
  144. /package/{skills/easysociable-content → content-engine}/starter/wiki/atoms/_index.md +0 -0
  145. /package/{skills/easysociable-content → content-engine}/starter/wiki/atoms/_template.md +0 -0
  146. /package/{skills/easysociable-content → content-engine}/starter/wiki/claims/_index.md +0 -0
  147. /package/{skills/easysociable-content → content-engine}/starter/wiki/claims/_template.md +0 -0
  148. /package/{skills/easysociable-content → content-engine}/starter/workbench/README.md +0 -0
@@ -0,0 +1,103 @@
1
+ ---
2
+ id: T-YYYYMMDD-XX
3
+ date: YYYY-MM-DD
4
+ status: scored
5
+ account: your-handle
6
+ profile: default
7
+ platform: x
8
+ pillar: P1
9
+ lane: teach
10
+ generation_mode: demand
11
+ source_type: inbox | user | need | product | recommendation
12
+ purpose: produce | library | discard
13
+ scout_label: demand | ally | foil | craft_only
14
+ capture_id:
15
+ need_ids:
16
+ product_ids: none
17
+ product_fit: none
18
+ recommendation_ids: none
19
+ ---
20
+
21
+ # 选题判断卡
22
+
23
+ > 这是一条准备讨论的内容机会,不是最终发布标题。
24
+
25
+ **结论:** ready | backlog | parked
26
+ **状态原因:** 一句话说明为什么得到这个结论
27
+ **适合谁:** 一句话说明具体受众和场景
28
+ **核心判断:** 一句话说明这条内容真正要讨论什么
29
+ **下一步:** 开始生成 / 补需求 / 补证据 / 修改角度 / 放弃
30
+ **产品连接:** none | P-… · direct | adjacent · 一句话说明连接方式
31
+ **生成路径:** demand | demand_to_offer | demand_to_review | review | offer_education | profile_thesis
32
+
33
+ ## 这条内容要解决什么问题?
34
+
35
+ 用 2–4 句话说明现实问题。不要复述标题。
36
+
37
+ ## 他们现在相信什么?
38
+
39
+ 写出受众当前的错误判断或困惑。
40
+
41
+ ## 我们准备讲哪一刀?
42
+
43
+ 说明我们的独特角度,不写完整标题,也不要把来源内容改写成我们的观点。
44
+
45
+ ## 为什么现在值得讲?
46
+
47
+ 说明发生了什么变化,以及为什么当前受众需要面对它。不是新闻摘要。
48
+
49
+ ## 看完后应该改变什么?
50
+
51
+ 用“之前 → 之后”表达用户认知或行动上的变化。
52
+
53
+ ## 凭什么这么判断?
54
+
55
+ 用人话列出 Needs、Product、Recommendation、Capture 或其他依据。
56
+
57
+ ## 当前缺口
58
+
59
+ 还缺什么需求证据、案例、用户反馈或产品事实。没有缺口就写“无”。
60
+
61
+ ## 建议形式
62
+
63
+ 平台、Lane 和推荐内容形式。暂时不写完整脚本。
64
+
65
+ ---
66
+
67
+ ## 评分与追踪附录
68
+
69
+ 以下内容服务于复核、机器读取和后续交接,不是主阅读面。
70
+
71
+ ### Score
72
+
73
+ Numbers only. Do not repeat the card above in a note column.
74
+
75
+ | dim | 0–10 |
76
+ |-----|------|
77
+ | context | |
78
+ | audience | |
79
+ | conflict | |
80
+ | insight | |
81
+ | evidence | |
82
+
83
+ **opp:** · **aud:** · **verdict:**
84
+
85
+ ### Trace
86
+
87
+ - source:
88
+ - capture_id: (inbox `C-…` only)
89
+ - need_ids:
90
+ - product_ids:
91
+ - product_fit:
92
+ - recommendation_ids:
93
+ - lane:
94
+ - generation_mode:
95
+ - raw:
96
+ - src: likes / replies / bookmarks / views @ time
97
+ - swipe: none | S…
98
+ - atoms: none | …
99
+ - claim: none | C…
100
+
101
+ ### Constraints
102
+
103
+ Writer must-nots. Keep short. Empty is allowed.
@@ -14,7 +14,9 @@ Scores whether a topic **deserves to exist as content**, not whether it can be w
14
14
  ## Pipeline (do not skip)
15
15
 
16
16
  ```text
17
- watchlist / inbox / url / discovery signal
17
+ Needs / Products / Recommendations → editorial judgment
18
+ → user accepts
19
+ inbox / url / need / user idea
18
20
  → 0) Hard filters
19
21
  → 1) Scout gate (purpose + label) ← most signals die here
20
22
  → 2) Opportunity five-dim score ← only for produce candidates
@@ -24,7 +26,23 @@ watchlist / inbox / url / discovery signal
24
26
 
25
27
  Library-only signals may skip (2)–(3) — see Scout purposes below.
26
28
 
27
- Watchlist scans create **Discovery** records first. Topic scoring runs only after the user explicitly promotes a Discovery (or names another explicit input).
29
+ Topic scoring runs only after an explicit input and editorial judgment. Product or recommendation fit is context, not evidence of audience demand.
30
+
31
+ Need match (`need_ids` non-empty) → default `scout_label=demand`. Do not create an `N-` from a product claim or headline.
32
+
33
+ Product fit is a separate optional annotation:
34
+
35
+ ```text
36
+ Needs = demand evidence
37
+ Products = offer facts
38
+ Topics = editorial judgment over the evidence
39
+ ```
40
+
41
+ Use `product_ids` only when the Topic honestly connects to an active product
42
+ entry. Use `product_fit=direct` when the Topic addresses a problem the product
43
+ solves, `adjacent` when it builds context without being a pitch, and `none`
44
+ when no product connection is needed. Product fit does not increase a score,
45
+ replace `need_ids`, or make a Topic `ready`.
28
46
 
29
47
  ---
30
48
 
@@ -33,7 +51,6 @@ Watchlist scans create **Discovery** records first. Topic scoring runs only afte
33
51
  - Off **profile pillars** (unless user override)
34
52
  - Hits audience **Not for** (F4F, pure crypto shill, comment-gate junk as the only substance, etc.)
35
53
  - Requires invented personal metrics/experience to write honestly
36
- - Wrong network for the watchlist row (e.g. X tools on a `tiktok` handle)
37
54
 
38
55
  ---
39
56
 
@@ -84,6 +101,8 @@ Only required for `purpose: produce`. Optional brief notes for `library`.
84
101
  **Principle:** these five dimensions answer **"is this worth saying?"** — not "can it be written well?"
85
102
  Presentation concerns (framework, structure, format) belong at Brief stage.
86
103
 
104
+ Write reasons in the topic's **readable judgment layer**. The `## Score` table is numbers only — do not duplicate the card in a note column. Verdict (`ready` / `backlog` / `parked`) belongs in the decision summary, then echoed as one line under Score.
105
+
87
106
  | Key | Name | What to judge | Weight |
88
107
  |-----|------|---------------|--------|
89
108
  | `context` | Context | What changed? Why now? Timing, freshness, relevance to the audience's world | **15%** |
@@ -116,6 +135,15 @@ Score using these checks (note which hit):
116
135
  2. **Buyer shape** — who buys/acts matches audience buyer as defined there
117
136
  3. **Wedge land** — can honestly teach or contrast toward this account’s product/wedge without inventing claims
118
137
 
138
+ If product fit is `direct`, load the cited product entry and verify that the
139
+ Topic's problem and proposed CTA are inside its `Problem`, `Mechanism`, and
140
+ `Not solving` sections. If the product is not needed, score the Topic on its
141
+ audience and wedge without forcing a mention.
142
+
143
+ **Need-source exception:** when `source_type=need` **and** `need_ids` is non-empty, matching **at least one need gloss** counts as one strong audience check. Do **not** require a full ICP (`audience.md` / `pillars.md` may still be hypothesis). Non-need sources do not get this exception. `ready` is still `opp_score ≥ 7.5` **and** `audience ≥ 6`.
144
+
145
+ Needs default `scout_label=demand`. Still pass hard filters. `frequency ≥ 3` may strengthen context `why_now`; do **not** fold it into `src_*`.
146
+
119
147
  | Range | Guide |
120
148
  |-------|-------|
121
149
  | 8–10 | ≥2 checks strong; clear buyer + pain |
@@ -131,7 +159,7 @@ Score using these checks (note which hit):
131
159
  | 5–7 | Some tension but the gap is soft or already widely acknowledged |
132
160
  | 0–4 | No real conflict; topic is an observation or list with nothing to challenge |
133
161
 
134
- When scoring, the agent must write the `current_belief` and `belief_gap` on the topic item — not just a score. If you can't articulate what the audience currently believes wrong, the conflict score cannot be above 5.
162
+ When scoring, write the false belief and the gap once under 「他们现在相信什么」 — not just a score, and not a second time in the Score table. If you can't articulate what the audience currently believes wrong, the conflict score cannot be above 5.
135
163
 
136
164
  **Insight (25%)**
137
165
 
@@ -149,6 +177,29 @@ When scoring, the agent must write the `current_belief` and `belief_gap` on the
149
177
  | 5–7 | Evidence exists but generic or secondhand |
150
178
  | 0–4 | No evidence beyond assertion; "experts say" with no expert named |
151
179
 
180
+ A verbatim need quote is `observation` evidence. List the quote (or a paraphrase **and** the `N-` id) under `## Evidence.available`. Without an `N-` / `C-` / user-lived experience, evidence cannot be above 5. Mechanism / lived experience is still required to reach 8–10.
181
+
182
+ Product documentation is evidence of what the product does, not evidence that
183
+ the audience wants it. Do not use a product entry to manufacture a Need or to
184
+ raise the audience score.
185
+
186
+ ### Generation-mode gates
187
+
188
+ Before scoring, set the smallest honest `generation_mode`:
189
+
190
+ | mode | Required |
191
+ |------|----------|
192
+ | `demand` | `need_ids` + Profile |
193
+ | `demand_to_offer` | `need_ids` + `product_ids` + Profile |
194
+ | `demand_to_review` | `need_ids` + `recommendation_ids` + Profile |
195
+ | `review` | `recommendation_ids` + named evidence + Profile |
196
+ | `offer_education` | `product_ids` + product mechanism + Profile |
197
+ | `profile_thesis` | Profile + Pillar |
198
+
199
+ Do not use `review` when the only evidence is vendor marketing. Review entries
200
+ must state limitations, research date, and commercial disclosure where
201
+ relevant. Product-only and recommendation-only inputs do not imply demand.
202
+
152
203
  When `evidence < 5`, agent should flag an **evidence gap** on the topic item and may suggest **research** before finalizing the score. Topics can be re-scored after research fills the gap.
153
204
 
154
205
  ---