opencode-skills-collection 4.0.71 → 4.0.73

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "updatedAt": "2026-09-23T02:09:47.535Z",
3
+ "updatedAt": "2026-09-25T02:13:20.897Z",
4
4
  "entries": [
5
5
  "00-andruia-consultant",
6
6
  "007",
@@ -38,6 +38,7 @@
38
38
  "agent-harness-fault-injection",
39
39
  "agent-manager-skill",
40
40
  "agent-memory",
41
+ "agent-memory-discipline",
41
42
  "agent-memory-mcp",
42
43
  "agent-memory-systems",
43
44
  "agent-observability",
@@ -475,6 +476,7 @@
475
476
  "changelog-automation",
476
477
  "changelog-updates",
477
478
  "chat-widget",
479
+ "chatexport-need-miner",
478
480
  "check-identity-pack",
479
481
  "chrome-extension-developer",
480
482
  "churn-prevention",
@@ -656,6 +658,7 @@
656
658
  "daily",
657
659
  "daily-gift",
658
660
  "daily-news-report",
661
+ "dali-short-address-commissioner",
659
662
  "dast-scanning",
660
663
  "data-engineer",
661
664
  "data-engineering-data-driven-feature",
@@ -869,6 +872,7 @@
869
872
  "enterprise-vpn-attack",
870
873
  "entropy-box",
871
874
  "environment-setup-guide",
875
+ "eol-resistor-calculator",
872
876
  "error-debugging-error-analysis",
873
877
  "error-debugging-error-trace",
874
878
  "error-debugging-multi-agent-review",
@@ -877,6 +881,7 @@
877
881
  "error-diagnostics-error-trace",
878
882
  "error-diagnostics-smart-debug",
879
883
  "error-handling-patterns",
884
+ "esl-price-sync",
880
885
  "ethical-hacking-methodology",
881
886
  "evaluation",
882
887
  "event-sourcing-architect",
@@ -1477,6 +1482,7 @@
1477
1482
  "markstream-vue2",
1478
1483
  "markstream-vue2-cli",
1479
1484
  "markstream-vue2-vite",
1485
+ "marlin-bed-leveling",
1480
1486
  "matematico-tao",
1481
1487
  "mathguard",
1482
1488
  "matplotlib",
@@ -1598,6 +1604,7 @@
1598
1604
  "nfs-storage",
1599
1605
  "nft-standards",
1600
1606
  "nika",
1607
+ "noaa-radar-satellite-fetching",
1601
1608
  "nodejs-backend-patterns",
1602
1609
  "nodejs-best-practices",
1603
1610
  "nosql-expert",
@@ -1655,6 +1662,7 @@
1655
1662
  "onboarding-cro",
1656
1663
  "onboarding-psychologist",
1657
1664
  "one-drive-automation",
1665
+ "oneroster-csv-validator",
1658
1666
  "ontoly-software-graph",
1659
1667
  "open-dynamic-workflows",
1660
1668
  "open-source-marketing",
@@ -2356,8 +2364,12 @@
2356
2364
  "warp-delegate",
2357
2365
  "warren-buffett",
2358
2366
  "wcag-audit-patterns",
2367
+ "weather-data-lifecycle-management",
2368
+ "weather-data-reproducibility",
2359
2369
  "weather-model-data-fetching",
2370
+ "weather-model-run-discovery",
2360
2371
  "weather-observation-fetching",
2372
+ "weather-pipeline-performance-diagnosis",
2361
2373
  "weaviate",
2362
2374
  "weaviate-cookbooks",
2363
2375
  "web-artifacts-builder",
@@ -0,0 +1,204 @@
1
+ ---
2
+ name: agent-memory-discipline
3
+ description: "Rules for when an agent should recall from long-term memory before acting and when it should save decisions, corrections and failures afterwards. Works with any memory backend."
4
+ category: memory
5
+ risk: safe
6
+ source: community
7
+ source_repo: mnemoverse/agent-memory-discipline
8
+ source_type: community
9
+ date_added: "2026-09-23"
10
+ author: mnemoverse
11
+ tags: [agent-memory, long-term-memory, context-engineering, mcp, agent-skills]
12
+ tools: [claude, cursor, gemini]
13
+ license: "CC0-1.0"
14
+ license_source: "https://github.com/mnemoverse/agent-memory-discipline/blob/main/LICENSE"
15
+ ---
16
+
17
+ # Agent Memory Discipline
18
+
19
+ ## Overview
20
+
21
+ Connecting a memory tool does not make an agent use it: tools register, the session runs, and nothing gets recalled or saved. This skill supplies the missing part, standing rules for when to read memory and when to write it.
22
+
23
+ The problem it solves is specific. An agent with memory available still repeats settled questions, reverts corrected habits, and loses decisions between sessions, because nothing tells it when recall and save are due. The rules below make both moments explicit.
24
+
25
+ ## When to Use This Skill
26
+
27
+ - Use when a memory tool or MCP memory server is connected but the agent is not using it consistently.
28
+ - Use when the user complains that the assistant loses preferences, conventions or past decisions between sessions.
29
+ - Use when setting up persistent memory for a project and the agent needs standing rules for reading and writing it.
30
+ - Use when the user says "remember this", "what did we decide", "recall", or "save this for next time".
31
+
32
+ ## How It Works
33
+
34
+ ### Before You Start: Any Memory Backend
35
+
36
+ The agent needs a memory tool it can call. Any backend works, and the rules are identical for each:
37
+
38
+ - **Files.** A `memory/` folder of Markdown notes, one fact per file. No dependencies, fully greppable, versionable in git.
39
+ - **A local MCP memory server.** Keeps everything on the local machine; several open-source options exist.
40
+ - **A hosted memory service over MCP.** Adds portability across tools and machines at the cost of the data living elsewhere.
41
+
42
+ Authentication is whatever the chosen backend requires: none for a local folder, the server's own configuration for a local MCP server, an API key or OAuth sign-in for a hosted service. This skill never handles credentials itself and never writes them into memory.
43
+
44
+ ### Step 1: Recall Before Acting
45
+
46
+ Read memory **before** doing any of these, not after:
47
+
48
+ - starting work on a project touched before
49
+ - choosing a library, pattern, or tool
50
+ - writing tests, commits, or documentation, where conventions apply
51
+ - answering "how do we usually do X here"
52
+ - anything the user phrases as "again", "like last time", or "as we agreed"
53
+
54
+ Skip recall for one-off factual questions, arithmetic, or anything fully specified in the current message. Recall costs a tool call and context; spending it on a self-contained question is waste.
55
+
56
+ Search with the words the user actually used, plus the project or repository name. If the first search returns nothing useful, try one broader query, then stop and proceed without memory rather than looping.
57
+
58
+ ### Step 2: Save After Deciding
59
+
60
+ Write to memory when one of these has just happened:
61
+
62
+ - a **decision** was made and will still matter next week ("we use pnpm", "the billing module stays untouched")
63
+ - the user **corrected** the agent, which is the strongest signal there is
64
+ - an approach **failed**, and why it failed
65
+ - a preference was stated that applies beyond this task
66
+ - a fact about the environment was discovered the hard way (a port, a flag, a service that must be running)
67
+
68
+ Do **not** save: the contents of files that can be read again, restatements of the current task, transient state, anything the user marked as temporary, and anything containing secrets, tokens, or personal data.
69
+
70
+ One memory, one fact. A paragraph containing four decisions cannot be superseded cleanly when one of them changes.
71
+
72
+ ### Step 3: Write It So It Survives
73
+
74
+ A memory that is useless in three weeks was written wrong. Give each entry, in the text if the backend has no fields for it:
75
+
76
+ - **what** was decided or observed, in one sentence
77
+ - **why**, briefly, because the reason outlives the decision
78
+ - **when** it became true, and when it stopped being true if it has
79
+ - **where it came from**: a file, a commit, a conversation, a test run
80
+
81
+ Prefer the user's own words over a paraphrase. Paraphrase drifts.
82
+
83
+ ### Step 4: Close the Past Instead of Overwriting It
84
+
85
+ When something changes, the old memory is not wrong. It is **closed**.
86
+
87
+ If the project moved from Redux to Zustand, "we use Redux" was true from January to June. Deleting it destroys the explanation for every component written in that window. Mark it superseded, keep its validity window, and write the new one alongside.
88
+
89
+ This is the single most destructive habit in agent memory, and it stays invisible until someone asks a question about old code.
90
+
91
+ ### Step 5: Keep Contradictions Visible
92
+
93
+ If recall returns two entries that disagree, do not pick the closer match and proceed. Surface both, with their dates, and ask or flag. A convention that a recent failure contradicts is exactly the situation where the user needs to be told, not smoothed over.
94
+
95
+ ### Step 6: Weigh Evidence and Policy Differently
96
+
97
+ - **Evidence** is what happened: one run, one failure, one observation. Cheap, plentiful, individually unreliable.
98
+ - **Policy** is what should happen: a convention, a decision, a rule. Expensive, and should be hard to change by accident.
99
+
100
+ An observation becomes policy when a human confirms it, when it lands in a merged decision record, or when it has worked repeatedly. Never promote a single observation to a rule without one of those.
101
+
102
+ ### What Following This Skill Produces
103
+
104
+ Two things, and nothing else:
105
+
106
+ - **Recalled context, stated before the work starts.** The relevant entries are named with their dates and sources, so the user can see what the agent is relying on. Conflicting entries are shown side by side, not merged.
107
+ - **New memory entries after decisions, corrections and failures.** One fact each, in this shape:
108
+
109
+ ```text
110
+ Project uses pnpm, not npm. Stated by the user on 2026-08-11 after a lockfile conflict. Applies to all packages in this repo.
111
+ ```
112
+
113
+ A superseded entry keeps its text and gains an end date and a pointer to the entry that replaced it. The full format, with closing and evidence examples, is in [references/entry-format.md](references/entry-format.md).
114
+
115
+ ## Examples
116
+
117
+ ### Example 1: A Correction
118
+
119
+ The user says: *"stop using npm here, we're on pnpm."*
120
+
121
+ 1. This is a correction, which is the strongest save signal. Save it.
122
+ 2. Write the entry:
123
+
124
+ ```text
125
+ Project uses pnpm, not npm. Stated by the user on 2026-08-11 after a lockfile conflict. Applies to all packages in this repo.
126
+ ```
127
+
128
+ 3. Do not also save "the user was annoyed", "ran npm install", or the lockfile contents.
129
+ 4. Next session, before running any package command in this repo, recall first and find it.
130
+
131
+ ### Example 2: A Contradiction
132
+
133
+ Recall returns two entries:
134
+
135
+ ```text
136
+ Integration tests run against the staging database (2026-06-02)
137
+ Integration tests use a local container; staging is off limits after the incident (2026-08-19)
138
+ ```
139
+
140
+ 1. Do not pick one and continue. State both, with dates.
141
+ 2. Ask: *"Memory has two rules for integration tests; the August one says staging is off limits. Use the local container?"*
142
+ 3. After the answer, close the entry that no longer holds, with its end date, and keep the other.
143
+
144
+ ### Example 3: Closing an Entry That Stopped Being True
145
+
146
+ Do not delete the old entry. Add an end date and a pointer to what replaced it, then write the new entry alongside:
147
+
148
+ ```text
149
+ [closed 2026-06-30, replaced by "State management uses Zustand"] State management uses Redux. Decided in the January architecture review.
150
+ State management uses Zustand. Migrated in June after the bundle size review. Applies to all new components.
151
+ ```
152
+
153
+ ## Best Practices
154
+
155
+ - **Do:** recall before project-specific work, and name the entries you rely on with their dates and sources.
156
+ - **Do:** save right after a decision, a correction, or a failure, in one sentence with its reason.
157
+ - **Do:** keep one fact per entry, so a later change can supersede it cleanly.
158
+ - **Do:** prefer the user's own words over a paraphrase.
159
+ - **Don't:** overwrite or remove an entry that stopped being true; close it with an end date instead.
160
+ - **Don't:** save file contents that can be read again, restatements of the current task, or transient state.
161
+ - **Don't:** promote a single observation to a rule without human confirmation, a merged decision record, or repeated success.
162
+
163
+ ## Limitations
164
+
165
+ - This skill installs no memory backend and requires no account. Without a memory tool the agent can call, it can only say that memory is unavailable and continue.
166
+ - It decides when to recall and what to save. How well entries are found again depends on the backend's own search.
167
+ - It does not resolve contradictions by itself. It surfaces them with their dates and asks the user which one holds.
168
+ - What happens to an entry the user asks to remove depends on what the backend supports.
169
+ - This skill does not replace environment-specific validation, testing, or expert review.
170
+ - Stop and ask for clarification if required inputs, permissions, or safety boundaries are missing.
171
+
172
+ ## Security & Safety Notes
173
+
174
+ - The skill contains no shell commands and makes no network calls of its own. It reads and writes memory only through the memory tool the user has already connected.
175
+ - Never save secrets, tokens, passwords, or personal data into memory, and never write credentials into an entry.
176
+ - A hosted memory backend stores entries outside the local machine. Choose the backend with that in mind.
177
+ - When the user asks for an entry to be removed, close or remove it as the backend allows, and confirm what was removed.
178
+
179
+ ## Common Pitfalls
180
+
181
+ - **Problem:** The memory tool is unavailable or failing.
182
+ **Solution:** Proceed without memory, say so in one line, and do not retry in a loop. Save the pending decision as soon as the tool is back, rather than dropping it.
183
+ - **Problem:** Recall returns nothing.
184
+ **Solution:** Run one broader query, then continue without memory. An empty result is information: the topic is new, so a decision made now is worth saving.
185
+ - **Problem:** Recall returns too much.
186
+ **Solution:** Keep the entries that match the current project and task; ignore the rest rather than pasting them into context.
187
+ - **Problem:** Two entries disagree.
188
+ **Solution:** Show both with their dates and ask which holds. Do not resolve the conflict silently.
189
+ - **Problem:** A save is rejected or filtered by the backend.
190
+ **Solution:** Report it once. Do not rephrase the same fact repeatedly to get it through.
191
+
192
+ ## Related Skills
193
+
194
+ - `@memory-systems`: when designing the memory architecture itself (short-term, long-term, graph-based) rather than the habit of using it.
195
+ - `@context-engineering`: when setting up rules files and session context, which this skill complements with rules for long-term memory.
196
+
197
+ ## Additional Resources
198
+
199
+ - [Upstream repository](https://github.com/mnemoverse/agent-memory-discipline) (CC0-1.0)
200
+ - [Agent Skills overview](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview)
201
+ - [Claude Code skills](https://code.claude.com/docs/en/skills)
202
+ - [Model Context Protocol](https://modelcontextprotocol.io), for connecting memory servers
203
+
204
+ *Written and maintained by the team behind [Mnemoverse](https://mnemoverse.com), which is one hosted implementation. The rules above are deliberately backend-neutral and were written to be useful without it.*
@@ -0,0 +1,37 @@
1
+ # Memory entry format
2
+
3
+ Reference for Step 3 and Step 4 of the skill. Use fields when the backend has them; otherwise write the same information into the text of the entry.
4
+
5
+ ## A new entry
6
+
7
+ | Part | What to write | Example |
8
+ |---|---|---|
9
+ | What | One sentence, the decision or observation | Project uses pnpm, not npm. |
10
+ | Why | The reason, briefly | Lockfile conflict between npm and pnpm. |
11
+ | When | The date it became true | 2026-08-11 |
12
+ | Source | Where it came from | Stated by the user in the session |
13
+ | Scope | Where it applies | All packages in this repository |
14
+
15
+ As a single line:
16
+
17
+ ```text
18
+ Project uses pnpm, not npm. Stated by the user on 2026-08-11 after a lockfile conflict. Applies to all packages in this repo.
19
+ ```
20
+
21
+ ## Closing an entry that stopped being true
22
+
23
+ Do not delete it. Add an end date and a pointer to what replaced it, then write the new entry alongside.
24
+
25
+ ```text
26
+ [closed 2026-06-30, replaced by "State management uses Zustand"] State management uses Redux. Decided in the January architecture review.
27
+ State management uses Zustand. Migrated in June after the bundle size review. Applies to all new components.
28
+ ```
29
+
30
+ ## Evidence and policy
31
+
32
+ Mark which kind an entry is, so a single observation is not read later as a rule.
33
+
34
+ ```text
35
+ [evidence] The integration suite failed twice against staging on 2026-08-19.
36
+ [policy] Integration tests use a local container; staging is off limits. Confirmed by the user on 2026-08-20.
37
+ ```
@@ -115,7 +115,7 @@ Use `data/specialized-plugin-candidates.json` for specialized-plugin membership
115
115
 
116
116
  Treat the current catalog and the legacy user-site bridge as one public system:
117
117
 
118
- - Current catalog: `sickn33/agentic-awesome-skills` at `https://sickn33.github.io/agentic-awesome-skills/`.
118
+ - Current catalog: `sickn33/agentic-awesome-skills` at `https://aaskills.tech/`.
119
119
  - Legacy bridge: `sickn33/sickn33.github.io` at `https://sickn33.github.io/antigravity-awesome-skills/`.
120
120
 
121
121
  For SEO, indexing, Pages, redirect, or infrastructure changes:
@@ -163,7 +163,7 @@ Every stable or prerelease version requires full release alignment. Creating the
163
163
  5. Merge that release PR through its required checks, update local `main` to equal `origin/main`, and wait for every source, release, or canonical-sync PR in the release path to close. Re-run the release-state and plugin gates if protected `main` moved.
164
164
  6. Run `npm run release:publish -- X.Y.Z`. It must resolve exactly one merged release PR from the same repository, authored by the repository owner, with base `main`, exact title `chore: release vX.Y.Z`, and head branch `release/vX.Y.Z`. Zero or multiple candidates fail closed; never select the newest approximate match. The command then verifies that exact protected merge before creating or reusing the tag and GitHub Release.
165
165
  The npm publication workflow must first check out protected `main`, verify that the peeled release tag is an ancestor of current `origin/main`, validate the version directly from the tagged `package.json`, and only then check out or execute tag-controlled code. It has no manual-dispatch bypass.
166
- 7. Wait for publishing workflows, then bind every proof to the exact released commit: verify the tag/ref, GitHub Release, npm version and intended dist-tag, required CI, CodeQL, and the explicitly dispatched release-only Pages build from the exact immutable `vX.Y.Z` tag. Never dispatch Pages from `main` or another branch. Verify live `llms.txt`, `skills.json`, catalog and plugin routes, and the legacy redirect bridge; do not accept a successful run for a different SHA.
166
+ 7. Wait for publishing workflows, then bind every proof to the exact released commit: verify the tag/ref, GitHub Release, npm version and intended dist-tag, required CI, CodeQL, and the release-tag Pages build from the exact immutable `vX.Y.Z` tag using `deployment_target=release`. Never manually dispatch the release-tag build from `main` or another branch. A separate `deployment_target=main` dispatch may publish a protected main commit after source and canonical-sync work completes; it must verify current-main identity before build and again before deploy. Canonical-sync commits marked `[skip pages]` are never dispatched by canonical synchronization. Verify live `llms.txt`, `skills.json`, catalog and plugin routes, and the legacy redirect bridge; do not accept a successful run for a different SHA.
167
167
  8. After npm confirms `X.Y.Z` as the published dist-tag, discover every already-configured local AAS MCP host from its real configuration and update each one to the exact same package version before declaring the release complete. Updating existing AAS host entries is part of the release; creating a previously absent host configuration still requires explicit authorization.
168
168
  - Use the published package's `aas mcp configure` two-pass flow: first preview the change, then repeat the identical command with its approval digest. Supply absolute host-config, cache, and backup paths; require a backup when replacing an existing configuration.
169
169
  - Pin `agentic-awesome-skills@X.Y.Z` and `--version X.Y.Z`; never use `latest`, reuse an older cached runtime, or create a previously absent host configuration without explicit authorization.
@@ -0,0 +1,196 @@
1
+ ---
2
+ name: chatexport-need-miner
3
+ description: "Mines offline Telegram Desktop chat exports (result.json) for unmet market needs and product opportunities using chunked streaming and verbatim quote grounding. Trigger phrases: mine chat export, telegram result.json, find unmet needs, analyze telegram chat."
4
+ category: development
5
+ risk: safe
6
+ source: community
7
+ source_repo: wwewtech/chatexport-need-miner
8
+ source_type: community
9
+ date_added: "2026-09-22"
10
+ author: wwewtech
11
+ tags: [telegram, market-research, text-mining, offline-analytics, developer-tools]
12
+ tools: [claude, cursor, gemini, windsurf]
13
+ license: "MIT"
14
+ ---
15
+
16
+ # ChatExport Need Miner: Offline Market Signal & Pain-Point Extractor
17
+
18
+ Transform offline Telegram Desktop chat exports (`result.json`) into quantified, quote-grounded rankings of unmet market needs with zero memory crashes and absolute source fidelity.
19
+
20
+ ## When to Use This Skill
21
+
22
+ Activate this skill when:
23
+ - The user provides an offline Telegram Desktop chat export (`result.json` or multi-file directory) and requests market research, customer problem analysis, or tool opportunity discovery.
24
+ - The user asks: "What are people in this chat struggling with?", "Find product ideas from this export", "What tools do users wish existed?", or "Mine complaints from this group".
25
+ - Analyzing multi-megabyte or gigabyte JSON dumps where standard in-memory deserialization (`json.load()`) risks out-of-memory (OOM) fatal crashes.
26
+ - Cross-referencing user complaints across multiple independent communities to eliminate echo-chamber noise.
27
+
28
+ Do NOT use this skill when:
29
+ - The user wants live channel scraping, continuous bot monitoring, or MTProto API automation (use dedicated online fetchers).
30
+ - Analyzing personal 1-on-1 romantic or private relationships.
31
+ - Processing generic SaaS helpdesk feeds (Zendesk, Intercom, Gong) with structured ticket schemas.
32
+
33
+ ## Core Mental Models & Non-Negotiable Rules
34
+
35
+ 1. **The 4MB Stream & Overlap Invariant (Memory Ceiling <= 8MB)**:
36
+ - Telegram Desktop `result.json` files routinely exceed 500MB to 5GB.
37
+ - NEVER load an entire export into memory with `json.load()` or `fs.readFileSync()`.
38
+ - Read the file in fixed 4MB chunks with a 4KB overlap tail.
39
+ - **Boundary Counting Law**: A substring hit is recorded if and only if its terminus falls past the overlap boundary. This guarantees zero missed boundary-spanning phrases and strictly zero duplicate counts.
40
+
41
+ 2. **Cross-Chat Multiplicity Law ($U \ge 3$ Priority)**:
42
+ - One user posting 50 complaints in a single chat is an anecdote; 5 distinct users posting the same complaint across 3 independent chats is a market signal.
43
+ - Cluster rank score is calculated as:
44
+ $$\text{Score} = U \times \sqrt{H}$$
45
+ where $U$ is the number of distinct chat exports containing the signal, and $H$ is the total verified keyword hits.
46
+ - A pattern appearing in $U \ge 3$ chats always outranks a pattern confined to $U = 1$, regardless of raw hit volume.
47
+
48
+ 3. **Verbatim Quote Anchor & Anti-Hallucination Law**:
49
+ - Every identified need theme MUST be backed by 2 to 5 verbatim quotes with exact ISO timestamp (`date`) and chat identifier.
50
+ - NEVER paraphrase a quote inside quotation marks. NEVER synthesize synthetic user statements.
51
+ - If a hypothesized theme lacks verbatim quote support, it MUST be marked `[UNCONFIRMED / NO VERBATIM EVIDENCE]`.
52
+
53
+ 4. **Bi-Lingual Case-Insensitive Seed Lexicons**:
54
+ - Russian Lexicon: `не хватает`, `вот бы`, `бесит`, `надоело`, `задолбал`, `ищу инструмент`, `ищу бот`, `есть ли бот`, `есть ли сервис`, `посоветуйте тул`, `не работает`, `вручную`, `рутина`, `приходится руками`.
55
+ - English Lexicon: `i wish`, `missing`, `annoying`, `frustrating`, `looking for a tool`, `is there an app`, `is there a bot`, `any alternative to`, `doesn't work`, `manually`, `repetitive`, `waste of time`.
56
+ - Custom terms may be added only when explicitly approved or provided by the user.
57
+
58
+ 5. **Strict Air-Gap & Zero Exfiltration**:
59
+ - The entire analysis executes locally and offline. No network requests, no external telemetry, no remote LLM proxying of raw message contents.
60
+
61
+ ## Named Sins & Anti-Patterns (Что категорически ЗАПРЕЩЕНО)
62
+
63
+ | Anti-Pattern | Manifestation in Code/Workflow | Mandatory Production Counter-Rule |
64
+ | :--- | :--- | :--- |
65
+ | **The OOM Slurp** | `data = json.load(open('result.json'))` on 800MB file. | Use incremental regex streaming or chunked buffered file reading with `<= 8MB` RAM footprint. |
66
+ | **Chunk Boundary Blindness** | Chunking without overlap, truncating `"looking for a tool"` across 4096-byte splits. | Maintain a 4KB sliding overlap tail across chunk transitions. |
67
+ | **Double-Count Overlap Trap** | Counting hits found in both chunk $N$ and the overlap window of chunk $N+1$. | Only increment match counter if `match.end() > overlap_size`. |
68
+ | **The Echo-Chamber Distortion** | Elevating a bug mentioned 80 times by 1 single user in 1 chat to the #1 product opportunity. | Apply Cross-Chat Multiplicity Law ($U \times \sqrt{H}$) and count unique authors when available. |
69
+ | **Hallucinated Quotations** | "User expressed desire for better sync" written in quotes as `"I really need better sync"`. | Exact substring slice from source buffer; if unquoted, label as synthetic analysis. |
70
+ | **Service Message Pollution** | Mining system notifications (`"pinned a message"`, `"joined group"`, bot spam) as human needs. | Filter out messages where `type == "service"` or text begins with known bot commands (`/start`). |
71
+ | **Premature Uniqueness Claim** | Stating "No tool currently exists for this problem" without validation. | Run explicit coverage audit; if unverified, output strictly: `I cannot confirm this`. |
72
+ | **Lossy Encoding Crash** | Crashing on multi-byte emoji surrogate pairs or non-UTF-8 characters in chat history. | Decode with `errors='replace'` or raw byte-level UTF-8 traversal. |
73
+ | **Monolithic Theme Lumping** | Grouping all complaints under `"Users want better UI"` or `"Performance issues"`. | Disaggregate into specific actionable workflows (e.g. `"No zero-downtime database migration path"`). |
74
+ | **API Creep** | Prompting the user for Telegram Bot tokens or phone numbers for MTProto login. | Reject live requests; reiterate that input contract requires offline `result.json` exports only. |
75
+
76
+ ## Concrete Archetypes / Presets
77
+
78
+ ### Archetype 1: Streaming Regex Need Scanner (Python 3.10+)
79
+ ```python
80
+ import re
81
+ import os
82
+ from typing import Generator, Dict, List, Tuple
83
+
84
+ CHUNK_SIZE = 4 * 1024 * 1024 # 4 MB
85
+ OVERLAP = 4096 # 4 KB
86
+
87
+ RU_LEXICON = re.compile(
88
+ r"(?i)\b(не\s+хватает|вот\s+бы|бесит|надоело|задолбал|ищу\s+(?:инструмент|бот|софт)|"
89
+ r"есть\s+ли\s+(?:бот|сервис|тул)|посоветуйте|вручную|рутина|приходится\s+руками)\b"
90
+ )
91
+ EN_LEXICON = re.compile(
92
+ r"(?i)\b(i\s+wish|missing|annoying|frustrating|looking\s+for\s+a\s+(?:tool|bot|app)|"
93
+ r"is\s+there\s+(?:an?\s+app|a\s+bot|a\s+tool)|any\s+alternative\s+to|manually|waste\s+of\s+time)\b"
94
+ )
95
+
96
+ def stream_chat_chunks(filepath: str) -> Generator[Tuple[str, int], None, None]:
97
+ overlap_tail = ""
98
+ with open(filepath, "r", encoding="utf-8", errors="replace") as f:
99
+ while True:
100
+ chunk = f.read(CHUNK_SIZE)
101
+ if not chunk:
102
+ break
103
+ combined = overlap_tail + chunk
104
+ yield combined, len(overlap_tail)
105
+ overlap_tail = combined[-OVERLAP:] if len(combined) >= OVERLAP else combined
106
+
107
+ def mine_need_signals(filepath: str, regex: re.Pattern, max_samples: int = 5) -> Dict:
108
+ hits = 0
109
+ samples: List[str] = []
110
+ for text_block, overlap_len in stream_chat_chunks(filepath):
111
+ for m in regex.finditer(text_block):
112
+ if m.end() > overlap_len:
113
+ hits += 1
114
+ if len(samples) < max_samples:
115
+ start = max(0, m.start() - 60)
116
+ end = min(len(text_block), m.end() + 140)
117
+ snippet = " ".join(text_block[start:end].split())
118
+ samples.append(snippet)
119
+ return {"total_hits": hits, "samples": samples}
120
+ ```
121
+
122
+ ### Archetype 2: Need Cluster & Prioritization Schema
123
+ ```json
124
+ {
125
+ "theme_id": "NEED-001",
126
+ "theme_name": "Zero-Downtime SQLite Replication for Edge Daemons",
127
+ "aggregate_score": 14.14,
128
+ "distinct_chats": 4,
129
+ "total_hits": 50,
130
+ "chats_observed": ["devops_talk_ru", "sqlite_users", "homelab_ops", "backend_craft"],
131
+ "evidence": [
132
+ {
133
+ "date": "2026-08-14T11:22:04",
134
+ "chat": "devops_talk_ru",
135
+ "verbatim_quote": "бесит что нет нормальной репликации для sqlite на edge серверах без поднятия тяжелого postgres"
136
+ },
137
+ {
138
+ "date": "2026-09-02T19:40:12",
139
+ "chat": "sqlite_users",
140
+ "verbatim_quote": "is there a tool that actually handles multi-master sqlite sync without crashing on high concurrency?"
141
+ }
142
+ ],
143
+ "existing_coverage": [
144
+ {"tool": "LiteFS", "gap": "Requires Consul / Fly.io infrastructure; complex on bare-metal edge."},
145
+ {"tool": "rqlite", "gap": "Raft layer alters SQLite interface semantics."}
146
+ ],
147
+ "verdict": "Real commercial gap for turnkey lightweight edge replication."
148
+ }
149
+ ```
150
+
151
+ ### Archetype 3: Multi-File Directory Batch Orchestrator
152
+ ```python
153
+ def process_export_directory(dir_path: str, pattern: re.Pattern) -> List[Dict]:
154
+ results = []
155
+ for root, _, files in os.walk(dir_path):
156
+ for file in files:
157
+ if file == "result.json" or file.endswith(".json"):
158
+ full_path = os.path.join(root, file)
159
+ chat_name = os.path.basename(root) if file == "result.json" else file
160
+ data = mine_need_signals(full_path, pattern)
161
+ if data["total_hits"] > 0:
162
+ results.append({"chat": chat_name, **data})
163
+ return results
164
+ ```
165
+
166
+ ## The Pre-Emit Quality Gate Checklist
167
+
168
+ Before emitting any market research summary or opportunity report, verify:
169
+ - [ ] **Memory Protection**: Confirmed that raw JSON was parsed via chunked stream or filtered iterator, never loaded as a monolithic object.
170
+ - [ ] **Boundary Integrity**: Overlap boundary logic was applied so split phrases across chunk cuts were not lost or double-counted.
171
+ - [ ] **Verbatim Quote Integrity**: Every listed quote exists word-for-word in the input file with exact date and source. Zero paraphrasing.
172
+ - [ ] **Cross-Chat Breadth**: Verified how many independent chat files the signal appeared in ($U \ge 3$ emphasized).
173
+ - [ ] **Service Message Stripping**: Confirmed system and bot notifications were not tabulated as customer pain points.
174
+ - [ ] **Honesty and Verification Clause**: If a gap or existing competitor cannot be verified, explicitly output: `"I cannot confirm this"`.
175
+ - [ ] **Actionable Granularity**: Themes are tied to specific engineering or operational workflows, not generic platitudes.
176
+
177
+ ## Self-Correction & Verification Loop
178
+
179
+ ### Bad (Vibe-Coded AI Slop Output):
180
+ > "I reviewed the chats and users are looking for better dev tools. Many people complain about speed and say they wish things worked better. There is a huge opportunity to build an AI bot for developers."
181
+ *Problems: Zero verbatim quotes, zero date citations, zero chat distribution count, ungrounded speculation, generic meaningless advice.*
182
+
183
+ ### Good (Production ChatExport Need Miner Output):
184
+ > ### 1. Schema Migration Rollbacks for Flyway in CI/CD — 38 hits across 4 chats ($U=4, H=38, \text{Score}=24.66$)
185
+ > - **Chat Distribution**: `k8s_ru` (14 hits), `devops_community` (12 hits), `backend_pro` (8 hits), `java_chat` (4 hits).
186
+ > - **Evidence 1**: *"бесит когда flyway падает на миграции в CI и приходится вручную чистить schema_version таблицу на стейдже"* (2026-07-19T09:12:44, `devops_community`).
187
+ > - **Evidence 2**: *"is there a tool to safely dry-run flyway down migrations before merging to master?"* (2026-08-04T16:21:09, `k8s_ru`).
188
+ > - **Coverage Check**: Flyway Pro provides undo migrations; however, community tier users lack automated sandbox validation without custom Docker scripts.
189
+ > - **Verdict**: Confirmed gap for a lightweight CLI pre-flight validator for open-source Flyway migrations.
190
+
191
+ ## Limitations
192
+
193
+ - Use only exports you are authorized to analyze. Chat exports can contain personal or sensitive information; minimize copied excerpts, redact identifiers in reports, and follow applicable retention and privacy requirements.
194
+ - Keep raw exports local and offline as described above. Do not upload messages, quotes, or identifiers to external services or include them in public reports without explicit authorization.
195
+ - Keyword counts and clustered themes are exploratory signals, not representative market research. Validate conclusions with independent evidence and do not infer intent from isolated messages.
196
+ - Chunked text scanning is not a complete Telegram JSON parser; malformed exports, escaped content, nested schemas, or encoding issues can affect counts. Verify any quoted excerpt against the original export.