opencode-skills-collection 4.1.12 → 4.1.13

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-10-11T02:35:51.067Z",
3
+ "updatedAt": "2026-10-12T03:00:05.001Z",
4
4
  "entries": [
5
5
  "00-andruia-consultant",
6
6
  "007",
@@ -1416,6 +1416,7 @@
1416
1416
  "k8s-manifest-generator",
1417
1417
  "k8s-security-policies",
1418
1418
  "kaizen",
1419
+ "kernel-prompt",
1419
1420
  "keyword-extractor",
1420
1421
  "kimi-delegate",
1421
1422
  "klaviyo-automation",
@@ -2213,6 +2214,7 @@
2213
2214
  "simplify-code",
2214
2215
  "since-cutoff",
2215
2216
  "site-architecture",
2217
+ "skeleton-first",
2216
2218
  "skill-audit",
2217
2219
  "skill-check",
2218
2220
  "skill-creator",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: datacircle
3
- description: "Look up LinkedIn profiles by URL through Datacircle (Up2Data or HarvestAPI, no markup), over its hosted MCP server or REST API, with the user's yes before each paid call."
3
+ description: "Look up LinkedIn profiles by URL through Datacircle (Up2Data, HarvestAPI or Fetchin, no markup), over its hosted MCP server or REST API, with the user's yes before each paid call."
4
4
  category: data
5
5
  risk: critical
6
6
  source: self
@@ -17,7 +17,7 @@ tools: [claude, cursor, gemini]
17
17
 
18
18
  Datacircle is a data co-op. Query your favorite B2B data APIs through us. Same request, same price, no markup.
19
19
 
20
- You send the provider's own request to api.datacircle.dev, with your Datacircle key. That's the only change. Right now we have 2 live LinkedIn profile APIs that we trust: Up2Data and HarvestAPI. Each request goes to the provider and gets the profile as it is today.
20
+ You send the provider's own request to api.datacircle.dev, with your Datacircle key. That's the only change. Right now we have 3 live LinkedIn profile APIs that we trust: Up2Data, HarvestAPI and Fetchin. Each request goes to the provider and gets the profile as it is today.
21
21
 
22
22
  This skill covers both ways in, the hosted MCP server and the REST API: which provider to pick, asking before every paid lookup, reading the cost and balance on each answer, and the errors.
23
23
 
@@ -40,30 +40,32 @@ claude mcp add --transport http datacircle https://api.datacircle.dev/mcp \
40
40
  --header "Authorization: Bearer $DATACIRCLE_API_KEY"
41
41
  ```
42
42
 
43
- - If the client already has it connected, prefer its tools over raw HTTP: `get_linkedin_profile` (`url`, and `provider`: `up2data`, the default, or `harvestapi`) and `get_balance` (free). It also has `list_files`, `get_download_link`, `get_invite_link` and `add_funds`.
43
+ - If the client already has it connected, prefer its tools over raw HTTP: `get_linkedin_profile` (`url`, and `provider`: `up2data`, the default, `harvestapi` or `fetchin`) and `get_balance` (free). It also has `list_files`, `get_download_link` and `add_funds`.
44
44
 
45
45
  ### REST API
46
46
 
47
47
  - Base URL: `https://api.datacircle.dev`. OpenAPI spec: `https://docs.datacircle.dev/openapi.json`. Docs: `https://docs.datacircle.dev`.
48
48
  - Read the API key from the `DATACIRCLE_API_KEY` environment variable and send it as `Authorization: Bearer $DATACIRCLE_API_KEY`. Never put the key in a URL and never print it.
49
- - The `X-Data-Provider` header names the provider (`up2data` or `harvestapi`). The request and the answer are the provider's own, plus a `datacircle_meta` object.
49
+ - The `X-Data-Provider` header names the provider (`up2data`, `harvestapi` or `fetchin`). The request and the answer are the provider's own, plus a `datacircle_meta` object.
50
50
 
51
51
  ### Prices and limits
52
52
 
53
53
  - Sign up at datacircle.dev with your work email: a $5 credit, that's 2,105 LinkedIn profiles at $2.375 per 1,000.
54
54
  - $2.375 per 1,000 through Up2Data (a profile it can't find is free), $3.70 per 1,000 through HarvestAPI.
55
- - Up2Data takes $1 a day per account (421 profiles), with a shared daily limit for all customers, then answers 429 until 00:00 UTC; HarvestAPI has no daily limit.
55
+ - $1.485 per 1,000 through Fetchin, a profile it can't find billed the same.
56
+ - Up2Data takes $1 a day per account (421 profiles), with a shared daily limit for all customers, then answers 429 until 00:00 UTC. HarvestAPI has no daily limit.
57
+ - Fetchin has no daily limit either.
56
58
  - A call your balance can't cover answers 402. Add funds, from $5, on your dashboard.
57
59
 
58
60
  ## How It Works
59
61
 
60
62
  ### Step 1: Say the cost, then wait for the user's yes
61
63
 
62
- Every lookup is paid from the user's balance. Before any lookup, even a single one, say which provider you will use and what it costs ($0.00125 a profile through Up2Data, $0.0037 through HarvestAPI; for a list, the total), and wait for the user's yes. Ask again before switching provider or adding URLs the user didn't give.
64
+ Every lookup is paid from the user's balance. Before any lookup, even a single one, say which provider you will use and what it costs ($0.002375 a profile through Up2Data, $0.0037 through HarvestAPI, $0.001485 through Fetchin; for a list, the total), and wait for the user's yes. Ask again before switching provider or adding URLs the user didn't give.
63
65
 
64
66
  ### Step 2: Look the profile up through Up2Data (the default)
65
67
 
66
- Pick Up2Data first: it is cheaper, and a profile it can't find is free. Send the full profile URL; Up2Data refuses a bare public identifier with a `400`.
68
+ Pick Up2Data first: a profile it can't find is free. Send the full profile URL; Up2Data refuses a bare public identifier with a `400`.
67
69
 
68
70
  ```bash
69
71
  curl -s -X POST "https://api.datacircle.dev/v1/profiles/enrich" \
@@ -76,9 +78,9 @@ curl -s -X POST "https://api.datacircle.dev/v1/profiles/enrich" \
76
78
 
77
79
  The body also takes `fields` (only those top-level fields of `data`, same price), `with_followers_and_connections` and `with_full_skills_and_endorsements` (same price, slower).
78
80
 
79
- ### Step 3: Use HarvestAPI past Up2Data's daily limit, or for its extra sections
81
+ ### Step 3: Use HarvestAPI or Fetchin past Up2Data's daily limit
80
82
 
81
- Use HarvestAPI when Up2Data answers `429`, or when the user needs a section only HarvestAPI returns (recommendations, interests, certifications, honors). Say which provider you used.
83
+ Use HarvestAPI or Fetchin when Up2Data answers `429`, HarvestAPI when the user needs the member's interests, which only it returns. Say which provider you used.
82
84
 
83
85
  ```bash
84
86
  curl -s -G "https://api.datacircle.dev/linkedin/profile" \
@@ -90,9 +92,20 @@ curl -s -G "https://api.datacircle.dev/linkedin/profile" \
90
92
 
91
93
  HarvestAPI answers `200` even when it can't find the profile: then `element` is `null` and `status` is `404`, and the lookup is billed ($0.0023).
92
94
 
95
+ Fetchin is the cheapest per profile found, with no daily limit; a profile it can't find is billed the same.
96
+
97
+ ```bash
98
+ curl -s -G "https://api.datacircle.dev/api/v1/profile" \
99
+ --data-urlencode "profileUrlOrUrn=https://www.linkedin.com/in/williamhgates" \
100
+ -H "Authorization: Bearer $DATACIRCLE_API_KEY" \
101
+ -H "X-Data-Provider: fetchin"
102
+ ```
103
+
104
+ It takes `profileUrlOrUrn` only, as a full profile URL: any other query parameter, a bare public identifier or a URN is a `400`. The answer is Fetchin's own profile object (`firstName`, `title`, `experiences`, `educations`, ...). A profile it can't find is its `404` (`code: PROFILE_NOT_FOUND`), and the lookup is billed ($0.001485).
105
+
93
106
  ### Step 4: Report the cost and the balance
94
107
 
95
- Every JSON answer carries `datacircle_meta`, for example `{"provider": "up2data", "cost_usd": 0.00125, "balance_usd": 4.99875}`. After more than one lookup, tell the user the total cost and the balance left. Reading the balance is free:
108
+ Every JSON answer carries `datacircle_meta`, for example `{"provider": "up2data", "cost_usd": 0.002375, "balance_usd": 4.997625}`. After more than one lookup, tell the user the total cost and the balance left. Reading the balance is free:
96
109
 
97
110
  ```bash
98
111
  curl -s "https://api.datacircle.dev/balance/" \
@@ -110,7 +123,7 @@ Summarise what the user needs from each profile (role, company, history, skills)
110
123
  | `402` | The balance can't cover the call | Tell the user; funds are added from $5 on their dashboard |
111
124
  | `404` | No `X-Data-Provider` header, or a path Datacircle doesn't call for that provider | Use the path that matches the provider |
112
125
  | `422` | Up2Data can't reach that profile (private or deleted). Not charged | Tell the user |
113
- | `429` | Up2Data's daily limit. Not charged | Ask before switching to HarvestAPI |
126
+ | `429` | Up2Data's daily limit, or Up2Data's or Fetchin's own rate limit. Not charged | Ask before switching provider; Fetchin's passes in a second |
114
127
  | `502`, `503` | The provider failed or didn't answer in time. Not charged | Send the same request again in a few seconds |
115
128
 
116
129
  ## Security & Safety Notes
@@ -123,6 +136,6 @@ Summarise what the user needs from each profile (role, company, history, skills)
123
136
  ## Limitations
124
137
 
125
138
  - Looks profiles up by LinkedIn URL only: no search by name, company or title, and no email or phone finding.
126
- - Up2Data's daily limit (`429` until 00:00 UTC); HarvestAPI has none but costs more and bills a profile it can't find.
139
+ - Up2Data's daily limit (`429` until 00:00 UTC); HarvestAPI and Fetchin have none, and bill a profile they can't find.
127
140
  - Private or deleted profiles can't be read (`422` from Up2Data, a `null` element from HarvestAPI).
128
141
  - Each call is live, so a lookup takes a few seconds; a list is looked up one profile per call.
@@ -41,7 +41,7 @@ This skill was contributed by a member of the Glasser team.
41
41
  Use the CLI only if it is already installed or the user has approved its
42
42
  installation under the host environment's software-installation policy.
43
43
  Installation instructions are maintained at
44
- <https://glasser.ai/SKILL.md>. Do not download or install executable code
44
+ <https://glasser.ai/SKILL.md?utm_source=agentic-awesome-skills&utm_medium=skill>. Do not download or install executable code
45
45
  without the review and approval required by the current environment.
46
46
 
47
47
  Check the CLI and account:
@@ -0,0 +1,64 @@
1
+ ---
2
+ name: kernel-prompt
3
+ description: "Use when composing or improving an LLM prompt or agent instruction. Asks one round of questions, then returns only the prompt; never performs the task."
4
+ category: productivity
5
+ risk: safe
6
+ source: community
7
+ source_repo: codegiveness/kernel-prompt
8
+ source_type: community
9
+ license: MIT
10
+ license_source: https://github.com/codegiveness/kernel-prompt/blob/main/LICENSE
11
+ date_added: "2026-10-10"
12
+ author: codegiveness
13
+ tags: [prompt-engineering, meta-prompting, prompt-optimization, agent-handoff]
14
+ tools: []
15
+ ---
16
+
17
+ # Kernel Prompt
18
+
19
+ Turn the user's message into a better prompt they can give to an AI agent. You write the instruction; you never do the work it describes.
20
+
21
+ ## When to Use
22
+ - The user invokes kernel-prompt by name, or asks to compose or improve an LLM prompt or an instruction for another AI.
23
+ - The user asks to turn guidance (for example collaboration or project guidance) into a system prompt.
24
+ - Not when the user only asks to review documents or guidance, even with wording suggestions, merely because they concern AI instructions.
25
+
26
+ ## Source
27
+ - The text the user writes with the invocation is the prompt to improve, even when it reads as a task ("improve skill X", "fix bug Y", "write a report on Z").
28
+ - Files, skills, URLs, and repos it mentions are context: read them so the prompt is accurate and specific (exact paths, names, current state, constraints), and reference them in the prompt. Never rewrite, improve, or summarize them as the deliverable.
29
+ - Transform a file or quoted text instead only when the user explicitly says that text *is* the prompt to improve.
30
+
31
+ ## Never do the task
32
+ - The deliverable is an instruction to an agent, not the agent's output. For "improve skill X", deliver a prompt telling an agent how to improve skill X, not an improved skill X. The same applies to code, documents, plans, and reviews.
33
+ - Before replying, check: does the reply contain the result the prompt asks for (a revised file, code, a finished document)? If so, you executed the task. Discard it and write the prompt.
34
+ - Create or edit no files unless the user explicitly asks to save the prompt.
35
+
36
+ ## Grill first
37
+ - Before drafting, always ask one round of questions, unless the user says "no questions" or "just write it".
38
+ - First look up what files and tools can answer, then ask 2–5 questions only the user can decide that would change the prompt: what "better" means, scope and non-goals, constraints, what the agent may change or must not touch, what done looks like, what the agent reports back.
39
+ - Lead each question with your recommended answer (first option in the harness question tool, or worded so "yes" accepts it). Anchor questions in specifics from the context you read.
40
+ - Ask another round only for decisions the previous answers opened. Stop when none remain or the user says to write.
41
+
42
+ ## Write the prompt (KERNEL)
43
+ - **K — Keep intent.** Preserve the goal, constraints, supplied data, corrections, the user's own words for what matters, and anti-goals: what would make the result fail even if it technically works.
44
+ - **E — Establish what is known.** Carry facts from the context and the user's answers into the prompt. Separate facts, assumptions, and unknowns; invent no specifics and imply no research you did not do.
45
+ - **R — Resolve ambiguity.** Settle minor gaps with routine judgment. Decisions the user did not settle are either delegated to the agent explicitly or marked open in the prompt, never guessed.
46
+ - **N — Name the work and boundaries.** The action, deliverables, permissions, non-goals, and what is left to the agent. Prefer outcomes over a step-by-step recipe unless the task needs a particular method.
47
+ - **E — Express success.** What done means, the checks that prove it, and what to report back. Add no unrequested targets, outputs, or approval stops.
48
+ - **L — Lay out the handoff.** Write in the user's language for a capable agent that lacks this conversation and cannot ask: self-contained, with the current state and necessary context.
49
+
50
+ ## Deliver
51
+ - Reply with the improved prompt inside a fenced code block, ready to copy and send; if the prompt itself contains triple backticks, use a four-backtick fence. No intro, no analysis, no critique of the original, no change log.
52
+ - After the prompt, list at most 3 assumptions you made that the user did not confirm; omit the list if there are none.
53
+
54
+ ## Example
55
+ User: "please see <path/to/module> and improve its readability and performance, inspired by <reference A> and <reference B>"
56
+ - Wrong: the revised module code. That is doing the task.
57
+ - Right: grill (e.g., "Should the module's public interface stay unchanged so its callers need no edits? Recommended: yes"), then reply with a prompt like:
58
+ Improve the module at <path/to/module>. Its callers in <path/to/callers> depend on its public interface, so keep that interface unchanged… Use <reference A> and <reference B> as references for… Keep… Do not… Done when… Report back…
59
+
60
+ ## Limitations
61
+ - Produces a prompt, not the task's result; the user or another agent still has to run it, and a clearer prompt does not guarantee a correct answer.
62
+ - Asks one round of questions before drafting unless the user says "no questions" or "just write it", so it adds a turn to quick requests.
63
+ - Reads mentioned files, URLs, and repositories only as context; it cannot fill in facts that neither the context nor the user supplies, and marks those decisions open instead.
64
+ - Upstream source: https://github.com/codegiveness/kernel-prompt (this copy adds catalog frontmatter, When to Use, and Limitations).
@@ -0,0 +1,163 @@
1
+ ---
2
+ name: skeleton-first
3
+ description: "Prove a data/AI/agent workflow end to end on a tiny sample, find cheap wins, then scale in cost-gated steps within budget."
4
+ category: workflow
5
+ risk: safe
6
+ source: self
7
+ source_type: self
8
+ date_added: "2026-10-11"
9
+ author: Dan He
10
+ tags: [llm, cost, pipeline, etl, rag, dbt, snowflake, budget, data-engineering]
11
+ tools: [claude, codex, cursor]
12
+ ---
13
+
14
+ # Skeleton first: prove the workflow cheaply, then scale
15
+
16
+ Agents tend to build every stage at full size before anything has run end to end. In data and AI work that fails expensively: a wrong prompt runs over a whole table, a wrong grain is discovered after twenty models exist, a big warehouse burns credits on a query that returns the wrong answer.
17
+
18
+ This skill changes the order of work:
19
+
20
+ 1. Make the **whole path** work on the **smallest possible input** with the **cheapest settings**.
21
+ 2. Prove it with a test.
22
+ 3. Scale up in **cost-gated rungs**, measuring and projecting cost before each one.
23
+ 4. Only then add features, **one at a time**, re-running the tests after each.
24
+
25
+ ## When to Use
26
+
27
+ - A workflow with 2+ stages (ingest -> transform -> model/LLM -> output), or anything that touches paid compute: warehouse credits, LLM tokens, embeddings, API calls.
28
+ - New or unfamiliar data, a new tool or SDK, an architecture that has not run in this environment before.
29
+ - The user asks to "build X end to end", "set up the pipeline", "process all the documents", "create the models".
30
+
31
+ Skip it for: one-file fixes, a single query, work already proven at full scale, or when the user explicitly says to go straight to full scale (then still state the projected cost first).
32
+
33
+ ## Step 0 - Define "it works" before building
34
+
35
+ Write down, and show the user in 3-5 lines:
36
+
37
+ - **The thinnest end-to-end path**: every stage present, the minimum of each. Example: 1 source table -> 1 transform -> 1 LLM call -> 1 output row.
38
+ - **One pass/fail test** a person can check, e.g. "for these 3 sample rows the output has columns A, B, C and the value for row 2 is X". Prefer tests with a known right answer.
39
+ - **A budget**: maximum spend and time for the whole job, and for the skeleton (the skeleton should cost almost nothing).
40
+
41
+ If the user has not given a budget, propose one and say so.
42
+
43
+ ## Step 1 - Write the ladder
44
+
45
+ Plan the work as rungs. Each rung adds exactly one thing and has a gate.
46
+
47
+ | Rung | Adds | Input size | Gate to pass |
48
+ | --- | --- | --- | --- |
49
+ | L0 skeleton | every stage, stubbed or minimal | 1 record | test passes end to end |
50
+ | L1 | real logic in the weakest stage | 10 records | test passes, cost per record measured |
51
+ | L2 | scale | ~1% or 100 records | quality spot-check, projected full cost under budget |
52
+ | L3 | full run | 100% | totals reconcile, test still passes |
53
+ | L4+ | one feature each | as needed | all previous tests still pass |
54
+
55
+ Show the ladder to the user before building unless the task is small. Keep it short.
56
+
57
+ ## Step 2 - Build L0, the walking skeleton
58
+
59
+ - Every stage exists and is connected; none is polished.
60
+ - Hardcode or stub anything that is not on the critical path (config, retries, UI, logging beyond a print).
61
+ - Use the cheapest settings everywhere (see Cost levers).
62
+ - Run it. If it fails, fix the path; do not start adding features.
63
+ - **Look at the sample before scaling it.** Read a few raw records and measure what you are paying for. Most cheap wins hide here: duplicate records (cache by content hash), boilerplate repeated in every record (headers, footers, legal notices, signatures, templated sections), empty or invalid inputs that the API still bills. Count how much of the cost each one accounts for; stripping a footer that is 70% of every document is worth more than any tuning later.
64
+
65
+ Not allowed until L0 passes: a second source, a second model or table, parallelism, tuning, UI, abstractions, handling edge cases that have not been seen yet.
66
+
67
+ ## Step 3 - Scale up in cost-gated rungs
68
+
69
+ At every rung:
70
+
71
+ 1. Run on the rung's input size.
72
+ 2. Record: records in/out, errors, wall time, cost (tokens, credits, API calls).
73
+ 3. **Project the next rung**: cost per record x next size, time per record x next size.
74
+ 4. **Gate**: continue only if the test passes, errors are understood, and the projection is under budget.
75
+
76
+ When the projection is over budget, the budget is a constraint to design around, not a reason to hand the job back. First look for a cheaper path that still passes the test: remove redundancy found in the sample, send less per record (relevant sections, truncation), cache, use a cheaper model or a free local method for part of the work. Prove the cheaper path on the same small rung, re-project, and continue if it fits. Stop and report to the user with the numbers and options only when no cheaper path passes the test, or when it would change what the user asked for in a way they would likely care about (say which trade-off you made either way).
77
+
78
+ Grow by roughly 10x per rung (1 -> 10 -> 100 or 1% -> full). Never jump from the skeleton straight to the full run.
79
+
80
+ Keep a run log in the working folder (e.g. `RUNLOG.md`):
81
+
82
+ | Rung | Input | Result | Errors | Time | Cost | Projected next | Decision |
83
+ | --- | --- | --- | --- | --- | --- | --- | --- |
84
+
85
+ ## Step 4 - Add features one at a time
86
+
87
+ - One change per step: a new source, a new model, a new tool, a prompt change.
88
+ - After each change, re-run every existing test (regression). If something that passed now fails, fix it before adding anything else.
89
+ - When tests were written by the same agent that built the system, ask for (or create via an independent subagent) a few held-out tests the builder has not seen, before claiming quality.
90
+
91
+ ## Cost levers
92
+
93
+ General
94
+
95
+ - Sample first: `LIMIT`, `SAMPLE`, a handful of files, one page of results.
96
+ - Cheapest model that can pass the test; a stronger model only for the stage that fails.
97
+ - Dry runs: compile, `EXPLAIN`, validate config without executing.
98
+ - Cap spend per call: `max_tokens`, timeouts, low concurrency until proven.
99
+ - Cache everything that is deterministic (embeddings, parsed files, API responses) so re-runs are free.
100
+ - Count tokens on the sample and multiply before the full run.
101
+ - Parse structure deterministically when it exists (headings, tables, templates); call an LLM only for prose.
102
+
103
+ Snowflake / Cortex Code
104
+
105
+ - Smallest warehouse (XS) with a short auto-suspend; scale the warehouse only after the logic is right.
106
+ - `SAMPLE` / `TABLESAMPLE` or `LIMIT` on sources; check grain and row counts on the sample.
107
+ - `EXPLAIN` before expensive queries; prefer transient or temporary tables for intermediate steps.
108
+ - Cortex AI functions: run on a few rows first, check output, estimate tokens (e.g. `SNOWFLAKE.CORTEX.COUNT_TOKENS` where available) before applying to a table.
109
+ - dbt: build one model with `--select`; use `--empty` (dbt 1.8+) to check the DAG compiles and runs with no data; `--defer` to reuse production parents instead of rebuilding them.
110
+
111
+ LLM / RAG / agents
112
+
113
+ - Ingest 1 document, then 10, before the corpus; measure seconds and cost per chunk and extrapolate.
114
+ - Evaluate on 5-10 questions with known answers before adding tools, rerankers or critics.
115
+ - Add one agent or tool at a time; log which tool calls each answer used.
116
+
117
+ ## Reporting at each gate
118
+
119
+ Tell the user, briefly:
120
+
121
+ - What ran (rung, input size) and whether the test passed.
122
+ - Cost and time so far, and the projection for the next rung.
123
+ - The decision you recommend (continue, fix, or stop), and anything that needs their call.
124
+
125
+ ## Anti-patterns
126
+
127
+ - Building every stage at full size, then running for the first time.
128
+ - Running an LLM or AI function over a whole table to "see what happens".
129
+ - Adding the second data source before the first one passes its test.
130
+ - Tuning or adding UI before the path works.
131
+ - Writing many tools or rules that each fit one test question (overfitting); fix classes of errors instead, and confirm on held-out tests.
132
+ - Claiming success on tests written by the same agent that built the system.
133
+ - Stopping at an over-budget projection without first trying to make the job fit the budget.
134
+
135
+ ## Example
136
+
137
+ User: "Tag all 400 tickets in tickets.csv with a category using our LLM endpoint."
138
+
139
+ ```text
140
+ Step 0 path: CSV -> 1 LLM call -> tagged.csv | test: 10 hand-checked tickets correct | budget: $2 (proposed)
141
+ Sample: 3 tickets have empty bodies (API bills then errors) -> skip; only 220 of 400 texts are unique -> cache by hash
142
+ Spent so far:
143
+ L0 1 ticket pass $0.004
144
+ L1 10 tickets 10/10 $0.04 -> full run projected $0.88 (with dedupe) < $2, continue
145
+ L2 100 12/12 $0.25 -> continue
146
+ L3 400 pass $0.88 total (naive run would have cost $1.60)
147
+ ```
148
+
149
+ ## Limitations
150
+
151
+ - Needs a way to measure cost (a ledger, billing view, token counts or query history); without it, projections are estimates and should be labeled as such.
152
+ - Small rungs can miss problems that only appear at scale (rate limits, rare record types, skewed partitions); keep the full-run gate and reconcile totals.
153
+ - Adds a few minutes and some tokens per task; not worth it for one-off queries, single-file fixes or work already proven at full size.
154
+ - Tests written by the same agent can be too easy; use held-out tests or a human spot-check before claiming quality.
155
+ - Cost levers listed for Snowflake and dbt are starting points; check your platform's current pricing and features.
156
+
157
+ ## Done means
158
+
159
+ - The full run completed within budget.
160
+ - Every test from every rung still passes.
161
+ - The run log shows cost, time and decisions per rung.
162
+ - The user knows the real cost per unit, so future runs are predictable.
163
+ - Intermediate outputs from earlier rungs (sample CSVs, partial indexes) are deleted or clearly marked, so only the final result is left for the user.
@@ -144,7 +144,7 @@ a match on generic safety boilerplate is not.
144
144
  ## Best Practices
145
145
 
146
146
  - ✅ Cite file name plus capture date every time you quote.
147
- - ✅ State whether the artifact was captured or vendor-reported.
147
+ - ✅ State whether the artifact was captured off the wire or reported by the model itself.
148
148
  - ✅ Treat every number — characters, tool counts — as tied to one dated file.
149
149
  - ✅ Say plainly when the archive has no entry for the product being asked about.
150
150
  - ❌ Do not paraphrase a prompt you did not fetch in this session.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-skills-collection",
3
- "version": "4.1.12",
3
+ "version": "4.1.13",
4
4
  "description": "OpenCode CLI plugin that automatically downloads and keeps skills up to date.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/skills_index.json CHANGED
@@ -18921,7 +18921,7 @@
18921
18921
  "path": "skills/datacircle",
18922
18922
  "category": "data",
18923
18923
  "name": "datacircle",
18924
- "description": "Look up LinkedIn profiles by URL through Datacircle (Up2Data or HarvestAPI, no markup), over its hosted MCP server or REST API, with the user's yes before each paid call.",
18924
+ "description": "Look up LinkedIn profiles by URL through Datacircle (Up2Data, HarvestAPI or Fetchin, no markup), over its hosted MCP server or REST API, with the user's yes before each paid call.",
18925
18925
  "risk": "critical",
18926
18926
  "source": "self",
18927
18927
  "date_added": "2026-10-10",
@@ -35271,6 +35271,38 @@
35271
35271
  "reasons": []
35272
35272
  }
35273
35273
  },
35274
+ {
35275
+ "id": "kernel-prompt",
35276
+ "path": "skills/kernel-prompt",
35277
+ "category": "productivity",
35278
+ "name": "kernel-prompt",
35279
+ "description": "Use when composing or improving an LLM prompt or agent instruction. Asks one round of questions, then returns only the prompt; never performs the task.",
35280
+ "risk": "safe",
35281
+ "source": "community",
35282
+ "date_added": "2026-10-10",
35283
+ "plugin": {
35284
+ "targets": {
35285
+ "codex": "supported",
35286
+ "claude": "supported"
35287
+ },
35288
+ "setup": {
35289
+ "type": "none",
35290
+ "summary": "",
35291
+ "docs": null
35292
+ },
35293
+ "reasons": []
35294
+ },
35295
+ "source_type": "community",
35296
+ "source_repo": "codegiveness/kernel-prompt",
35297
+ "license": "MIT",
35298
+ "license_source": "https://github.com/codegiveness/kernel-prompt/blob/main/LICENSE",
35299
+ "tags": [
35300
+ "prompt-engineering",
35301
+ "meta-prompting",
35302
+ "prompt-optimization",
35303
+ "agent-handoff"
35304
+ ]
35305
+ },
35274
35306
  {
35275
35307
  "id": "keyword-extractor",
35276
35308
  "path": "skills/keyword-extractor",
@@ -56003,6 +56035,40 @@
56003
56035
  "reasons": []
56004
56036
  }
56005
56037
  },
56038
+ {
56039
+ "id": "skeleton-first",
56040
+ "path": "skills/skeleton-first",
56041
+ "category": "workflow",
56042
+ "name": "skeleton-first",
56043
+ "description": "Prove a data/AI/agent workflow end to end on a tiny sample, find cheap wins, then scale in cost-gated steps within budget.",
56044
+ "risk": "safe",
56045
+ "source": "self",
56046
+ "date_added": "2026-10-11",
56047
+ "plugin": {
56048
+ "targets": {
56049
+ "codex": "supported",
56050
+ "claude": "supported"
56051
+ },
56052
+ "setup": {
56053
+ "type": "none",
56054
+ "summary": "",
56055
+ "docs": null
56056
+ },
56057
+ "reasons": []
56058
+ },
56059
+ "source_type": "self",
56060
+ "tags": [
56061
+ "llm",
56062
+ "cost",
56063
+ "pipeline",
56064
+ "etl",
56065
+ "rag",
56066
+ "dbt",
56067
+ "snowflake",
56068
+ "budget",
56069
+ "data-engineering"
56070
+ ]
56071
+ },
56006
56072
  {
56007
56073
  "id": "skeuomorphism",
56008
56074
  "path": "skills/design-it/skeuomorphism",