@ssheleg/sheleg-dev 0.11.0 → 0.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,63 @@ All notable changes to this project are documented here.
4
4
  Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
5
5
  Versioning: [SemVer](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## v0.11.2 — the schema address the manifests declared returns 404
8
+
9
+ A sibling repository's wave-3 run (agent-stack) measured that
10
+ `json.schemastore.org/claude-code-plugin.json` — the `$schema` both of this pack's
11
+ manifests declared — redirects to a 404. Verified here with `curl -sL` on 2026-08-31
12
+ before changing anything: the old address 404s, the two below return 200.
13
+
14
+ - **`plugins/sheleg-dev/.claude-plugin/plugin.json`** now declares
15
+ `claude-code-plugin-manifest.json`, and **`.claude-plugin/marketplace.json`** declares
16
+ `claude-code-marketplace.json` — which also fixes a second, quieter defect: the
17
+ marketplace file had been pointing at the *plugin* schema, so even when the address
18
+ resolved it named the wrong contract. Both strings match what agent-stack verified
19
+ and ships. No behavioural change; `claude plugin validate --strict` does not fetch
20
+ the URL, which is why this shipped green through every gate.
21
+
22
+ ## v0.11.1 — the evals stop being a plan, and the last tails get their receipts
23
+
24
+ The 2026-08-29 skill audit left four tails (DEV-06 through DEV-08, DEV-10), and the
25
+ eval suite's own RESULTS.md opened with "authored, schema-validated, never executed
26
+ against a model". This release closes all four; that sentence is replaced by two dated
27
+ model runs and the method that produced them.
28
+
29
+ - **The behavioral evals cover all seven skills and carry dated runs** (DEV-10, board
30
+ B-103). Three scenarios are authored for the skills that had none — `crypto-payments`
31
+ (crediting under hostile deliveries), `error-tracking` (scrubbing layers and release
32
+ parity), `frontend-performance` (vitals moved and proven) — bringing `scenarios.json`
33
+ to six, green under `evals_validate.py` with the planted-defect self-test still
34
+ caught. Then the whole suite was executed on 2026-08-31: 14 trigger queries × 3 fresh
35
+ subagent sessions × 2 models (haiku, sonnet — 84 blind probes), plus all six
36
+ scenarios' expected-behavior lines scored against fresh sonnet implementation designs.
37
+ Haiku: train 23/24, validation 15/18. Sonnet: train 23/24, validation 16/18; scenario
38
+ lines 23/24 (s01's design named no refund-path test). Two findings are recorded
39
+ rather than tuned away: "Explain what LCP means" (q13, a negative case) pulls
40
+ `frontend-performance` in 5 of 6 runs across both models, and one sonnet run routed
41
+ the crypto implementation query to `task-pipeline` — coexistence changes routing,
42
+ exactly as the eval README warns. Method and its limits: `test/evals/RESULTS.md`.
43
+ - **`ad-tracking`'s last two undated vendor facts were re-verified, and one was stale**
44
+ (DEV-06, B-104). The Enhanced Conversions step said `Tools → Conversions → …` — the
45
+ pre-redesign console path; checked 2026-08-31 against
46
+ `support.google.com/google-ads/answer/13258081`, the live path is **Goals →
47
+ Conversions → Settings → Enhanced conversions**, and the step now states it with its
48
+ date. The `_gcl_aw` claim was true but incomplete: the cookie's ~90-day default life
49
+ and the Safari ITP cap (JS-set cookies live 7 days, 24 hours after a link-decorated
50
+ navigation — which a gclid landing is) now sit beside the redirect-survival claim,
51
+ dated. Body ~4726 tokens of the 4750 house working limit.
52
+ - **`google-signin` stops pointing installers at a private repository** (DEV-07,
53
+ B-102). The third sentence a reader met cited `web/server.py:1657` in the Prowl repo
54
+ as the live reference implementation — an address no installer can resolve (M-07).
55
+ The shipped `references/full-guide.md` FastAPI + JS skeleton is the reference
56
+ implementation, and the sentence now says so.
57
+ - **`google-auth` states the major its own examples require** (DEV-08, B-101). The ADC
58
+ and JWT examples call `client.fetch()` while `npm install google-auth-library` pinned
59
+ nothing, so a reader on 9.x copied a method their client does not have. Checked
60
+ 2026-08-31 against the library's CHANGELOG: the fetch-compatible API landed in
61
+ **10.1.0** (2025-06-12, PR #1939), `client.request()` is the 9.x form and survives in
62
+ the current 11.x. The install block now carries the floor, the fallback and the date.
63
+
7
64
  ## v0.11.0 — a trigger literal gets one home, and four facts get their dates
8
65
 
9
66
  The 2026-08-29 skill audit found the pack's two Google skills advertising the same
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ssheleg/sheleg-dev",
3
- "version": "0.11.0",
3
+ "version": "0.11.2",
4
4
  "description": "Seven integration skills for the layer a product reaches once it has users: Stripe subscription billing and cancellation retention, crypto payments, ad and conversion tracking under Consent Mode v2, Google sign-in and the wider Google auth surface, error tracking, and Core Web Vitals. This package is the installer CLI.",
5
5
  "bin": {
6
6
  "sheleg-dev": "bin/sheleg-dev.js"
@@ -1,9 +1,9 @@
1
1
  {
2
- "$schema": "https://json.schemastore.org/claude-code-plugin.json",
2
+ "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
3
3
  "name": "sheleg-dev",
4
4
  "displayName": "Sheleg Dev",
5
5
  "description": "The integration layer a product needs once it has users: Stripe subscription billing reconciled into your own database, crypto payments that survive over-payment and duplicate webhooks, ad and conversion tracking under Consent Mode v2, Google sign-in with the account-linking guards, the wider Google auth surface, and Core Web Vitals work that moves the score, and Sentry error tracking wired so it does not forward your own credentials to a third party and so a stack trace names the commit that caused it.",
6
- "version": "0.11.0",
6
+ "version": "0.11.2",
7
7
  "author": {
8
8
  "name": "ssheleg",
9
9
  "url": "https://x.com/sshlg93"
@@ -180,7 +180,10 @@ gtag('set', 'user_data', {
180
180
  });
181
181
  ```
182
182
 
183
- 3. Enable in Google Ads console: Tools → Conversions → Enhanced conversions → Turn on
183
+ 3. Enable in the Google Ads console: **Goals → Conversions → Settings →
184
+ Enhanced conversions → "Turn on enhanced conversions"** (checked 2026-08-31
185
+ against `support.google.com/google-ads/answer/13258081`; the old
186
+ Tools → Conversions path is gone from the redesigned UI)
184
187
 
185
188
  ### user_id (Cross-Device Tracking)
186
189
 
@@ -195,7 +198,11 @@ gtag('config', 'G-XXXXXXXXXX', {
195
198
 
196
199
  ### gclid Preservation Through External Redirects
197
200
 
198
- The `gclid` from Google Ads auto-tagging is stored in the `_gcl_aw` first-party cookie. This cookie persists across external redirects (e.g. Stripe Checkout → return URL) because it's set on your domain. No additional code needed.
201
+ The `gclid` from Google Ads auto-tagging is stored in the `_gcl_aw` first-party
202
+ cookie (~90-day default life). It survives external redirects (Stripe Checkout →
203
+ return URL) because only expiry ends a cookie on your own domain — no extra code.
204
+ Checked 2026-08-31; the caveat is Safari, where ITP caps JS-set cookies at 7
205
+ days — 24 hours after a link-decorated navigation, which a gclid landing is.
199
206
 
200
207
  ### Google Ads console setup
201
208
 
@@ -27,6 +27,11 @@ npm install google-auth-library
27
27
  npm install googleapis
28
28
  ```
29
29
 
30
+ The `client.fetch()` calls below require google-auth-library **≥ 10.1.0** (the
31
+ fetch-compatible API landed in 10.1.0, 2025-06-12); on 9.x use
32
+ `client.request()` with the same arguments. Checked 2026-08-31: latest is 11.x
33
+ and keeps both methods.
34
+
30
35
  ### Python
31
36
 
32
37
  - `google-auth` — core auth library (google.oauth2, google.auth, credentials, transport)
@@ -17,9 +17,8 @@ description: >-
17
17
  Condensed operating instructions. Full narrative guide with diagrams, token
18
18
  anatomy, troubleshooting table, and a copy-paste FastAPI + JS skeleton:
19
19
  [references/full-guide.md](references/full-guide.md) — read it when
20
- implementing from scratch. A live reference implementation exists in the
21
- Prowl repo (`0xDEV`): `web/auth.py`, `web/server.py:1657`
22
- (`/api/auth/google`), `web/static/js/app.js:16-110`.
20
+ implementing from scratch; its FastAPI + JS skeleton is the reference
21
+ implementation this skill ships.
23
22
 
24
23
  ## Pick the right flow first
25
24