@djordje-stojanovic/sigmaskills 0.8.0 → 0.9.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 +27 -1
- package/README.md +20 -14
- package/manifest.json +10 -5
- package/package.json +4 -3
- package/registry/skill-baselines.json +179 -2
- package/{storgestudio-arena-create → sigmacreatearena}/SKILL.md +3 -3
- package/{storgestudio-arena-create → sigmacreatearena}/agents/openai.yaml +2 -2
- package/{storgestudio-arena-create → sigmacreatearena}/kit/README.md +1 -1
- package/{storgestudio-arena-create → sigmacreatearena}/references/arena-guide.md +1 -1
- package/sigmadeeplook/references/installs.md +1 -1
- package/sigmadeeplook/scripts/dl_3d.py +31 -1
- package/sigmadeeplook/scripts/dl_adapt.py +15 -2
- package/sigmadeeplook/scripts/dl_bins.py +245 -11
- package/sigmadeeplook/scripts/dl_binx.py +2 -1
- package/sigmadeeplook/scripts/dl_cls.py +289 -0
- package/sigmadeeplook/scripts/dl_core.py +28 -0
- package/sigmadeeplook/scripts/dl_data.py +11 -2
- package/sigmadeeplook/scripts/dl_docs.py +27 -1
- package/sigmadeeplook/scripts/dl_extra.py +2 -0
- package/sigmadeeplook/scripts/dl_listcol.py +99 -0
- package/sigmadeeplook/scripts/dl_media.py +16 -0
- package/sigmadeeplook/scripts/dl_misc.py +593 -0
- package/sigmadeeplook/scripts/dl_reg.py +120 -0
- package/sigmadeeplook/scripts/dl_tab2.py +249 -0
- package/sigmadeeplook/scripts/dl_vba.py +220 -0
- package/sigmadeeplook/scripts/dl_write.py +20 -2
- package/sigmadeeplook/scripts/dl_xlcalc.py +272 -0
- package/sigmadeeplook/scripts/look.py +3 -3
- package/sigmafreedom/SKILL.md +68 -0
- package/sigmafreedom/agents/openai.yaml +11 -0
- package/sigmafreedom/references/doctrine.md +53 -0
- package/sigmafreedom/scripts/guardrail_allowlist.txt +52 -0
- package/sigmafreedom/scripts/guardrail_lint.py +146 -0
- package/sigmaresearch/SKILL.md +5 -1
- package/sigmawrite/SKILL.md +7 -0
- package/{easytalk → sigmawritegui}/SKILL.md +3 -3
- package/{easytalk → sigmawritegui}/agents/openai.yaml +2 -2
- package/{easytalk → sigmawritegui}/template.html +1 -1
- package/src/catalog.js +10 -2
- /package/{storgestudio-arena-create → sigmacreatearena}/kit/screenshots/caption-rank.png +0 -0
- /package/{storgestudio-arena-create → sigmacreatearena}/kit/screenshots/image-board.png +0 -0
- /package/{storgestudio-arena-create → sigmacreatearena}/kit/screenshots/image-rank.png +0 -0
- /package/{storgestudio-arena-create → sigmacreatearena}/kit/template/arena.json +0 -0
- /package/{storgestudio-arena-create → sigmacreatearena}/kit/template/arena.py +0 -0
- /package/{storgestudio-arena-create → sigmacreatearena}/kit/template/index.html +0 -0
- /package/{storgestudio-arena-create → sigmacreatearena}/kit/template/make_items.py +0 -0
- /package/{storgestudio-arena-create → sigmacreatearena}/kit/template/selftest.py +0 -0
- /package/{storgestudio-arena-create → sigmacreatearena}/kit/template/server.py +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,29 @@ All notable changes to [Sigmaskills](https://github.com/Djordje-Stojanovic/Sigma
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.9.2] — 2026-10-18
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- `sigmadeeplook` readers from the held-out rounds: binaries, archives, tables and spreadsheets read more fields correctly (typed binary fields, VBA source, `.reg`, `.deb` members, list columns, MIDI events, docx Title) (#111, #112). The headerless-records test now skips when numpy is missing, which turns the main branch CI green again.
|
|
12
|
+
|
|
13
|
+
## [0.9.1] — 2026-10-18
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- `sigmacreatearena`, `sigmaresearch` and `sigmawritegui` had a plain YAML description containing `: `, which strict YAML parsers reject. The descriptions are now quoted, the installer reads quoted values as plain text, and a test keeps every header strict YAML.
|
|
18
|
+
|
|
19
|
+
## [0.9.0] — 2026-10-18
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
|
|
23
|
+
- `easytalk` is renamed `sigmawritegui`: SigmaWrite plus a GUI board the user reads and types into. The trigger phrase "easy talk" and the `EASYTALK REPLY` format stay.
|
|
24
|
+
- `storgestudio-arena-create` is renamed `sigmacreatearena`.
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
|
|
28
|
+
- `sigmafreedom`: de-safeguards and decensors any repository. Writes the freedom doctrine into the steering docs, sweeps agent-facing docs and skill sources with a classifier (freedom limits and moral voice deleted with a was/now change log; craft, scope-routing and mechanical lines kept), installs `guardrail_lint` with an owner-vetoable allowlist wired into the repo's gate plus a negative self-test, writes the ADRs, and reports the kept-list for the owner's veto.
|
|
29
|
+
|
|
7
30
|
## [0.8.0] — 2026-10-17
|
|
8
31
|
|
|
9
32
|
### Added
|
|
@@ -258,7 +281,10 @@ Ship high-rigor, installable agent skills (not apps): full-repo audits, performa
|
|
|
258
281
|
| 2026-08-11 | `5dab832` | Add CHANGELOG and mark v0.1.0 as the first Sigmaskills release |
|
|
259
282
|
| 2026-08-11 | `124a666` | Polish v0.1.0 docs for multi-host install and use |
|
|
260
283
|
|
|
261
|
-
[Unreleased]: https://github.com/Djordje-Stojanovic/Sigmaskills/compare/v0.
|
|
284
|
+
[Unreleased]: https://github.com/Djordje-Stojanovic/Sigmaskills/compare/v0.9.2...HEAD
|
|
285
|
+
[0.9.2]: https://github.com/Djordje-Stojanovic/Sigmaskills/compare/v0.9.1...v0.9.2
|
|
286
|
+
[0.9.1]: https://github.com/Djordje-Stojanovic/Sigmaskills/compare/v0.9.0...v0.9.1
|
|
287
|
+
[0.9.0]: https://github.com/Djordje-Stojanovic/Sigmaskills/compare/v0.8.0...v0.9.0
|
|
262
288
|
[0.8.0]: https://github.com/Djordje-Stojanovic/Sigmaskills/compare/v0.7.0...v0.8.0
|
|
263
289
|
[0.7.0]: https://github.com/Djordje-Stojanovic/Sigmaskills/compare/v0.6.1...v0.7.0
|
|
264
290
|
[0.6.1]: https://github.com/Djordje-Stojanovic/Sigmaskills/compare/v0.6.0...v0.6.1
|
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ Portable [Agent Skills](https://agentskills.io/) that install once and run on **
|
|
|
6
6
|
|
|
7
7
|
| | |
|
|
8
8
|
|---|---|
|
|
9
|
-
| **Release** | [**v0.
|
|
9
|
+
| **Release** | [**v0.9.2**](https://github.com/Djordje-Stojanovic/Sigmaskills/releases/tag/v0.9.2) |
|
|
10
10
|
| **Changelog** | [CHANGELOG.md](CHANGELOG.md) |
|
|
11
11
|
| **License** | [MIT](LICENSE) |
|
|
12
12
|
| **Spec** | [agentskills.io](https://agentskills.io/) |
|
|
@@ -18,7 +18,7 @@ Portable [Agent Skills](https://agentskills.io/) that install once and run on **
|
|
|
18
18
|
Σ brief → paste-ready agent briefs, chat only
|
|
19
19
|
Σ ship → one planned ticket to a merged, cleaned-up PR
|
|
20
20
|
Σ write → clear STE-inspired technical English
|
|
21
|
-
|
|
21
|
+
sigmawritegui → plain chat and interactive status or question boards
|
|
22
22
|
arena → blind pairs that rank any options by Elo
|
|
23
23
|
Σ research → read public sources, record evidence and access gaps
|
|
24
24
|
Σ deeplook → helper for what agents cannot read: video, speech, scans, binaries
|
|
@@ -60,8 +60,8 @@ The [installer guide](https://github.com/Djordje-Stojanovic/Sigmaskills/blob/mai
|
|
|
60
60
|
| **SigmaShip** | `sigmaship` | Ship one planned ticket: build, review rounds, merge, clean up | One merged PR, closed ticket, main in sync |
|
|
61
61
|
| **SigmaWrite** | `sigmawrite` | Clear STE-inspired technical English | Chat writing voice |
|
|
62
62
|
| **SigmaRefactor** | `sigmarefactor` | Safe, user-approved large-file refactoring | Discussion, changes, and verification |
|
|
63
|
-
| **
|
|
64
|
-
| **
|
|
63
|
+
| **SigmaWriteGUI** | `sigmawritegui` | Plain chat with status and question boards | Interactive HTML board and copied replies |
|
|
64
|
+
| **SigmaCreateArena** | `sigmacreatearena` | Blind-pairs arena that ranks any options by Elo per metric | Local arena page, Elo board with ranges and costs |
|
|
65
65
|
| **SigmaResearch** | `sigmaresearch` | Read Reddit, X, HN, GitHub, Hugging Face, video sites and non-English pages; counts sources read in full | Answer with source links, dates, read scope and access gaps |
|
|
66
66
|
| **SigmaDeepLook** | `sigmadeeplook` | Helper for files an agent cannot read: video, speech, scanned PDF or image, binary, odd container. Plain text and data are read directly | Evidence with file paths, limits, and a side-by-side `view.html` |
|
|
67
67
|
|
|
@@ -93,6 +93,10 @@ Turns GitHub issues, features, bugs, or plain work statements into short, copy-p
|
|
|
93
93
|
|
|
94
94
|
Ships one GitHub issue that has acceptance criteria. It opens a worktree, a branch, and a draft PR that tracks the criteria and review rounds. It builds test-first and pushes each slice. Fresh agents then review the branch in rounds until one round finds nothing at P0–P2. Then it merges, closes the ticket, removes the branches and worktree, and checks that local `main` equals `origin/main`. It refuses a ticket without checkable criteria and names the skill to run first.
|
|
95
95
|
|
|
96
|
+
### SigmaFreedom
|
|
97
|
+
|
|
98
|
+
De-safeguards and decensors a repository. It deletes model-authored refusals, bans and moral limits from agent-facing docs and skill sources, writes the owner's freedom doctrine, installs `guardrail_lint` with an owner-vetoable keep-list so the lines never come back, and reports every keep for the owner's veto. Every deletion lands in a was/now change log for a clean revert. Mechanical invariants (one post per run, no file overwrites, secrets never printed) stay.
|
|
99
|
+
|
|
96
100
|
### SigmaWrite
|
|
97
101
|
|
|
98
102
|
A writing voice inspired by **ASD-STE100 Simplified Technical English**. It gives soft steers, not numbered rules, and bans gibberish and invented words. A sharp outsider can follow the result, and it stays technical. It stays on until you turn it off. To keep the voice on everywhere, copy the **Paste as system prompt** block from [`sigmawrite/SKILL.md`](sigmawrite/SKILL.md) into your host's instructions. It is not certified STE.
|
|
@@ -101,11 +105,11 @@ A writing voice inspired by **ASD-STE100 Simplified Technical English**. It give
|
|
|
101
105
|
|
|
102
106
|
Counts lines (with `laloc` if you have it, or by itself), reads the five largest maintained files, and explains safe refactoring choices. It waits for your approval before it edits. It keeps behavior, tests, interfaces, and your own changes intact. At the end it reports lines removed apart from lines moved into new modules.
|
|
103
107
|
|
|
104
|
-
###
|
|
108
|
+
### SigmaWriteGUI
|
|
105
109
|
|
|
106
110
|
Keeps replies short and puts status reports or question batches on one interactive board. Read ticks, recommended options, task statuses, and free text feed a **Copy my answers** reply that names every unread card. Open it with an HTML preview tool or as a local browser file. Say “easy talk off” to stop.
|
|
107
111
|
|
|
108
|
-
###
|
|
112
|
+
### SigmaCreateArena
|
|
109
113
|
|
|
110
114
|
Ranks many options by your taste. After a short grilling round it builds an **arena**: two options side by side, names hidden, sides random. You pick per metric. A Bradley-Terry fit turns the picks into an Elo board with 95 % ranges, so overlapping bars read as a tie. The kit is a standard-library Python server and one HTML page: local only, no install.
|
|
111
115
|
|
|
@@ -146,14 +150,15 @@ Use your host's skill syntax. Examples:
|
|
|
146
150
|
|
|
147
151
|
```text
|
|
148
152
|
$sigmareview https://github.com/owner/repo
|
|
153
|
+
$sigmafreedom Set this repo up for freedom
|
|
149
154
|
$sigmaimprove
|
|
150
155
|
$sigmabrief https://github.com/owner/repo/issues/12
|
|
151
156
|
$sigmabrief all open
|
|
152
157
|
$sigmaship https://github.com/owner/repo/issues/42
|
|
153
158
|
$sigmawrite
|
|
154
159
|
$sigmarefactor
|
|
155
|
-
$
|
|
156
|
-
$
|
|
160
|
+
$sigmawritegui
|
|
161
|
+
$sigmacreatearena Rank these 8 thumbnail ideas blind
|
|
157
162
|
$sigmaresearch Research recent discussions about local language models
|
|
158
163
|
$sigmadeeplook What happens at 2:10 in D:\clips\demo.mp4?
|
|
159
164
|
```
|
|
@@ -165,14 +170,15 @@ $sigmadeeplook What happens at 2:10 in D:\clips\demo.mp4?
|
|
|
165
170
|
|
|
166
171
|
```text
|
|
167
172
|
/skill:sigmareview https://github.com/owner/repo
|
|
173
|
+
/skill:sigmafreedom Set this repo up for freedom
|
|
168
174
|
/skill:sigmaimprove
|
|
169
175
|
/skill:sigmabrief https://github.com/owner/repo/issues/12
|
|
170
176
|
/skill:sigmabrief all open
|
|
171
177
|
/skill:sigmaship https://github.com/owner/repo/issues/42
|
|
172
178
|
/skill:sigmawrite
|
|
173
179
|
/skill:sigmarefactor
|
|
174
|
-
/skill:
|
|
175
|
-
/skill:
|
|
180
|
+
/skill:sigmawritegui
|
|
181
|
+
/skill:sigmacreatearena Rank these 8 thumbnail ideas blind
|
|
176
182
|
/skill:sigmaresearch Research recent discussions about local language models
|
|
177
183
|
/skill:sigmadeeplook What happens at 2:10 in ~/clips/demo.mp4?
|
|
178
184
|
```
|
|
@@ -191,8 +197,8 @@ $sigmadeeplook What happens at 2:10 in D:\clips\demo.mp4?
|
|
|
191
197
|
| `sigmaship` | issue URL · `#N` | Refuses tickets without checkable acceptance criteria |
|
|
192
198
|
| `sigmawrite` | (no input) | Session writing voice until you turn it off |
|
|
193
199
|
| `sigmarefactor` | repository path or current repository | Scans and discusses large files before any edit |
|
|
194
|
-
| `
|
|
195
|
-
| `
|
|
200
|
+
| `sigmawritegui` | “easy talk” · status or question batch · `EASYTALK REPLY` | Conversation mode until “easy talk off” |
|
|
201
|
+
| `sigmacreatearena` | what to rank (options, groups, metrics) | Grills first; never ranks for you; you decide when it is enough |
|
|
196
202
|
| `sigmaresearch` | topic · date range · depth or a source count | Reports sources actually read and access gaps |
|
|
197
203
|
| `sigmadeeplook` | a file or folder path · a question about it | Evidence with paths and a Limits list; never runs the file |
|
|
198
204
|
|
|
@@ -208,8 +214,8 @@ $sigmadeeplook What happens at 2:10 in D:\clips\demo.mp4?
|
|
|
208
214
|
| SigmaBrief | `gh` read access when briefing from issues or PRs · **no** push to the product repo |
|
|
209
215
|
| SigmaWrite | Nothing beyond chat |
|
|
210
216
|
| SigmaRefactor | Read access to the target repository · `laloc` is optional; without it the skill counts lines itself |
|
|
211
|
-
|
|
|
212
|
-
|
|
|
217
|
+
| SigmaWriteGUI | A writable output folder and a browser or HTML preview; chat fallback when unavailable |
|
|
218
|
+
| SigmaCreateArena | Python 3 (standard library only) and a browser; the server listens on 127.0.0.1 |
|
|
213
219
|
| SigmaResearch | Python 3 for the bundled readers · `yt-dlp` for YouTube comments · Claude in Chrome and owner's existing session for X; missing tools become access gaps |
|
|
214
220
|
| SigmaDeepLook | Python 3.10 or newer; optional ffmpeg, LibreOffice, poppler, tesseract and Python packages · `look.py doctor` lists them; missing tools become Not-looked-at rows |
|
|
215
221
|
|
package/manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"name": "sigmaskills",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.9.2",
|
|
5
5
|
"description": "Portable Agent Skills monorepo and first-party Sigma Installer",
|
|
6
6
|
"skills": [
|
|
7
7
|
{
|
|
@@ -45,13 +45,18 @@
|
|
|
45
45
|
"needsReferences": true
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
|
-
"id": "
|
|
49
|
-
"title": "
|
|
48
|
+
"id": "sigmawritegui",
|
|
49
|
+
"title": "SigmaWriteGUI",
|
|
50
50
|
"needsReferences": false
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
|
-
"id": "
|
|
54
|
-
"title": "
|
|
53
|
+
"id": "sigmacreatearena",
|
|
54
|
+
"title": "SigmaCreateArena",
|
|
55
|
+
"needsReferences": true
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"id": "sigmafreedom",
|
|
59
|
+
"title": "SigmaFreedom",
|
|
55
60
|
"needsReferences": true
|
|
56
61
|
}
|
|
57
62
|
],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@djordje-stojanovic/sigmaskills",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.2",
|
|
4
4
|
"description": "Portable Agent Skills monorepo and first-party Sigma Installer",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -30,11 +30,12 @@
|
|
|
30
30
|
"sigmabrief",
|
|
31
31
|
"sigmaship",
|
|
32
32
|
"sigmawrite",
|
|
33
|
+
"sigmafreedom",
|
|
33
34
|
"sigmarefactor",
|
|
34
35
|
"sigmaresearch",
|
|
35
36
|
"sigmadeeplook",
|
|
36
|
-
"
|
|
37
|
-
"
|
|
37
|
+
"sigmawritegui",
|
|
38
|
+
"sigmacreatearena",
|
|
38
39
|
"README.md",
|
|
39
40
|
"LICENSE",
|
|
40
41
|
"CHANGELOG.md"
|
|
@@ -101,6 +101,16 @@
|
|
|
101
101
|
"references/brief-method.md": "1bd9200bec7d41106bdff4f0ab39b86597bb2524b8d37af0eb663e9ec854770e",
|
|
102
102
|
"references/prompt-contract.md": "198bc5ab7a4c27fa14f3c168fe2f79bf1851e1ab7ef89cd95e551df5e398485a"
|
|
103
103
|
}
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"release": "0.8.0",
|
|
107
|
+
"revision": "4ec9b13a2e3e0cf10f6f218ee5e733f290575f8870bf56feb29e7d69e6b884c0",
|
|
108
|
+
"files": {
|
|
109
|
+
"SKILL.md": "442f9ba7785a30510df995b85b89b95f429d3dd5fe051dc85850309d6361d9e5",
|
|
110
|
+
"agents/openai.yaml": "69c0219b0f8ab7974527ca9f6fb06b67b21683a42ac1de63ef6014cdef1dde85",
|
|
111
|
+
"references/brief-method.md": "1bd9200bec7d41106bdff4f0ab39b86597bb2524b8d37af0eb663e9ec854770e",
|
|
112
|
+
"references/prompt-contract.md": "198bc5ab7a4c27fa14f3c168fe2f79bf1851e1ab7ef89cd95e551df5e398485a"
|
|
113
|
+
}
|
|
104
114
|
}
|
|
105
115
|
],
|
|
106
116
|
"sigmaperformance": [
|
|
@@ -255,6 +265,17 @@
|
|
|
255
265
|
"references/method.md": "659848b0d8a7e2dbcbde3fa88de09d07f20b68bb91ea808e766d526b137adc03",
|
|
256
266
|
"references/report.md": "ebabc522ac35dcfd7538abe4657d4933bf795d5ea20242a968592e0c569e7b41"
|
|
257
267
|
}
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"release": "0.8.0",
|
|
271
|
+
"revision": "5ce9fb447bb7c3035c98cc3c8d2e46f960f93fb5ca45482a7c94233f1929e196",
|
|
272
|
+
"files": {
|
|
273
|
+
"SKILL.md": "d900e0d033861065542308c966a9e2e2ec5322a70ce2614aba6e8bddb7d9fb07",
|
|
274
|
+
"agents/openai.yaml": "fc9f585d84b751aa9978d3b275a9f8b0383a1d57cb49fec27e905e794fa14d5a",
|
|
275
|
+
"references/measure.md": "efd083364caedfce9c5e69a2267209d3317cfa218029b48455e49cdc2f9affe0",
|
|
276
|
+
"references/method.md": "659848b0d8a7e2dbcbde3fa88de09d07f20b68bb91ea808e766d526b137adc03",
|
|
277
|
+
"references/report.md": "ebabc522ac35dcfd7538abe4657d4933bf795d5ea20242a968592e0c569e7b41"
|
|
278
|
+
}
|
|
258
279
|
}
|
|
259
280
|
],
|
|
260
281
|
"sigmawrite": [
|
|
@@ -337,6 +358,14 @@
|
|
|
337
358
|
"SKILL.md": "8db1872ac240efceec949d6b5e13c651b38e1de7b4c82588375c7dcd8f123cb1",
|
|
338
359
|
"agents/openai.yaml": "19b53dc100195c2d8cfd03720028f577ce8e3ba95829551c6d31d96a23021144"
|
|
339
360
|
}
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
"release": "0.8.0",
|
|
364
|
+
"revision": "ff7cf7f2ff2851b916a5ed4aa856b0b9421095e94e60e8fe88fa0614b363cc9c",
|
|
365
|
+
"files": {
|
|
366
|
+
"SKILL.md": "8db1872ac240efceec949d6b5e13c651b38e1de7b4c82588375c7dcd8f123cb1",
|
|
367
|
+
"agents/openai.yaml": "19b53dc100195c2d8cfd03720028f577ce8e3ba95829551c6d31d96a23021144"
|
|
368
|
+
}
|
|
340
369
|
}
|
|
341
370
|
],
|
|
342
371
|
"sigmarefactor": [
|
|
@@ -402,6 +431,15 @@
|
|
|
402
431
|
"agents/openai.yaml": "baaa351482edffe072ae708968dcc1c70842caebf38a8aa7fd667b8da7a01c70",
|
|
403
432
|
"references/scan.md": "049715a6948138109b64994e969a1ed5541cab8151b8c8d9070d5eae379d45c5"
|
|
404
433
|
}
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
"release": "0.8.0",
|
|
437
|
+
"revision": "25b4efaa5d9d9309791dbbec0f1a32eab409137c4cd16892f646714019b04115",
|
|
438
|
+
"files": {
|
|
439
|
+
"SKILL.md": "a6bef0c53cf780c79da20204cbbd15db65fa98dac3afa0ef1c8475725cd7f4cb",
|
|
440
|
+
"agents/openai.yaml": "baaa351482edffe072ae708968dcc1c70842caebf38a8aa7fd667b8da7a01c70",
|
|
441
|
+
"references/scan.md": "049715a6948138109b64994e969a1ed5541cab8151b8c8d9070d5eae379d45c5"
|
|
442
|
+
}
|
|
405
443
|
}
|
|
406
444
|
],
|
|
407
445
|
"sigmaimprove": [
|
|
@@ -470,6 +508,17 @@
|
|
|
470
508
|
"references/issue.md": "59300698c9a1d32e1d868173b22dea5fcc7ea7b7ca97198faf688256e5638300",
|
|
471
509
|
"references/lenses.md": "c5f2982ed1f4330035895dabacef550a5c1b241e0e1a370547b8715f89f3f8b3"
|
|
472
510
|
}
|
|
511
|
+
},
|
|
512
|
+
{
|
|
513
|
+
"release": "0.8.0",
|
|
514
|
+
"revision": "9efbc885f031786dd84637009a3b8c38806c50d587b84799692fe60828c32da0",
|
|
515
|
+
"files": {
|
|
516
|
+
"SKILL.md": "118dacdc212f6f359ad9be0564492451bb2dc93f1f03c8af0094994caeff3060",
|
|
517
|
+
"agents/openai.yaml": "ba80d59887cef951c006ad52ddd42fa1999d12b464dff17b6bb0b711f7eb505f",
|
|
518
|
+
"references/categories.md": "58ad43e0da22b5a67f0bec01abc13760ffa835dec9efc07343b07e8326cba7bd",
|
|
519
|
+
"references/issue.md": "59300698c9a1d32e1d868173b22dea5fcc7ea7b7ca97198faf688256e5638300",
|
|
520
|
+
"references/lenses.md": "c5f2982ed1f4330035895dabacef550a5c1b241e0e1a370547b8715f89f3f8b3"
|
|
521
|
+
}
|
|
473
522
|
}
|
|
474
523
|
],
|
|
475
524
|
"sigmaship": [
|
|
@@ -532,9 +581,19 @@
|
|
|
532
581
|
"references/land.md": "a1ae956d9017a9b67af68d6d71521d969b78e97cc1f9c3997d4bcedf9d69465f",
|
|
533
582
|
"references/review-round.md": "e9062112683c71c28dd3bee5329afd6b9bd555ac83a1643b5f7ae5946b09df3a"
|
|
534
583
|
}
|
|
584
|
+
},
|
|
585
|
+
{
|
|
586
|
+
"release": "0.8.0",
|
|
587
|
+
"revision": "248e37ea81d74561de3600e936143dbd1b7ae5543492fb7f1f8770f61182e090",
|
|
588
|
+
"files": {
|
|
589
|
+
"SKILL.md": "572d6c64273cde938ecdb9e1bccb39bf6d72e21fc386704035a75b18930ee315",
|
|
590
|
+
"agents/openai.yaml": "29f73f7ef65b71dfd4efa27dfef26a961dae98eee2882c63084528b7abef3b96",
|
|
591
|
+
"references/land.md": "a1ae956d9017a9b67af68d6d71521d969b78e97cc1f9c3997d4bcedf9d69465f",
|
|
592
|
+
"references/review-round.md": "e9062112683c71c28dd3bee5329afd6b9bd555ac83a1643b5f7ae5946b09df3a"
|
|
593
|
+
}
|
|
535
594
|
}
|
|
536
595
|
],
|
|
537
|
-
"
|
|
596
|
+
"sigmawritegui": [
|
|
538
597
|
{
|
|
539
598
|
"release": "0.6.0",
|
|
540
599
|
"revision": "7e945683bf985978a80f8bddc752d9358063281729d306f537d2f542b7223fcf",
|
|
@@ -604,9 +663,28 @@
|
|
|
604
663
|
"scripts/sr_core.py": "8ee3cb15a0146058319da6558267ff1420fde9bdd1ef45a332736c7099b4581f",
|
|
605
664
|
"scripts/sr_readers.py": "e45c351c9ba94ea8c64a6d2f75867bd6dc1e31b18ef25659d444dbda7f2ce295"
|
|
606
665
|
}
|
|
666
|
+
},
|
|
667
|
+
{
|
|
668
|
+
"release": "0.8.0",
|
|
669
|
+
"revision": "7a1bf001d30f624bf9fbd75ee1bf91b65992efecdef61ab0ae63d35d67ec53e2",
|
|
670
|
+
"files": {
|
|
671
|
+
"SKILL.md": "251ba024d0340c7c94efb7de6b79b4f28884f1e96243f38fd67e8c80d1ea15c4",
|
|
672
|
+
"agents/openai.yaml": "147b99833f77e6d12c4d72424c8b4f06248de7b0ad3f260357429c6a2bce4b68",
|
|
673
|
+
"references/access-ladder.md": "5c883c307e43da2b66ba8445975348827326d23b69030d6745aaf367239e483a",
|
|
674
|
+
"references/counting.md": "3213da1b93d383c4855a4fdfb8bce2593c6254f8a67736835ce8cd91279c921c",
|
|
675
|
+
"references/public-sources.md": "3afa8b50ca2608109f60a6282f5f2d205d2640cdab0e2ba0ab83a6eacef53410",
|
|
676
|
+
"references/reddit.md": "93b53e9aa6652ca96ab6ebd7ae87a72e854b073181dcb69ae1d8eeaf2487d8e8",
|
|
677
|
+
"references/x.md": "9dd86b3d98f1c272f3a2bdce1478de0159680ca9ad5b4535874571a9a3d37817",
|
|
678
|
+
"scripts/__pycache__/sr_core.cpython-314.pyc": "3f4190d5c063e15ea1e413d058e9ef9172087053d38baad01e031622c73c717c",
|
|
679
|
+
"scripts/__pycache__/sr_readers.cpython-314.pyc": "6e42d09cd20055ac664932729b2b1bd0ea033ff1216ac00caa89f39effac6261",
|
|
680
|
+
"scripts/read.py": "ed2959813c1a4a2f8631d11c4acb905cf5137190da1c5590001d250a133dca95",
|
|
681
|
+
"scripts/source_log.py": "21fa54180b67b5a66ba4377fe3c209ae6f87d0ae40047a91856cf2bc483d0e09",
|
|
682
|
+
"scripts/sr_core.py": "8ee3cb15a0146058319da6558267ff1420fde9bdd1ef45a332736c7099b4581f",
|
|
683
|
+
"scripts/sr_readers.py": "e45c351c9ba94ea8c64a6d2f75867bd6dc1e31b18ef25659d444dbda7f2ce295"
|
|
684
|
+
}
|
|
607
685
|
}
|
|
608
686
|
],
|
|
609
|
-
"
|
|
687
|
+
"sigmacreatearena": [
|
|
610
688
|
{
|
|
611
689
|
"release": "0.7.0",
|
|
612
690
|
"revision": "3c28851e883e32f8921c94bcc4df1364f5cfa42f7b10e535849eb6ff8d9a7b96",
|
|
@@ -626,6 +704,105 @@
|
|
|
626
704
|
"references/arena-guide.md": "37008cbe46843106f4b7c1f5907d676aebbc279e7eb51d97bb5ae9eac0444045"
|
|
627
705
|
}
|
|
628
706
|
}
|
|
707
|
+
],
|
|
708
|
+
"easytalk": [
|
|
709
|
+
{
|
|
710
|
+
"release": "0.8.0",
|
|
711
|
+
"revision": "7e945683bf985978a80f8bddc752d9358063281729d306f537d2f542b7223fcf",
|
|
712
|
+
"files": {
|
|
713
|
+
"SKILL.md": "88d7dc079348c00ae89f5395403d93be10b45fe319799ef62ccb303c4ef64d7c",
|
|
714
|
+
"agents/openai.yaml": "2b37c8e632553692e561b7d1de7aa2d00ab7612136e5f873934bd49395c08c9e",
|
|
715
|
+
"template.html": "e59ee52b94e26f2727f4b007af4c29bc20c0c048775b74caa7fbd53988b94483"
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
],
|
|
719
|
+
"sigmadeeplook": [
|
|
720
|
+
{
|
|
721
|
+
"release": "0.8.0",
|
|
722
|
+
"revision": "a22c9f8dc465d380089dec43d0e747306d7f4974068ea00af592fd7511376b61",
|
|
723
|
+
"files": {
|
|
724
|
+
"SKILL.md": "68f9a560e750fea146302a348966aa8e93d84731088fe899517c59f024b28790",
|
|
725
|
+
"agents/openai.yaml": "019b5763cdb1af585ec74d4abe36e25b27841491cf434bc0bcf593ab7ab2403b",
|
|
726
|
+
"references/3d.md": "f8e2fcd679ab67010aef0ce261d09764e3c08e53aea82942ee2cbe14e77c3931",
|
|
727
|
+
"references/archive.md": "3d200a6b33331c3ed3daab463caec0f6d21f2bec147d74803debba51d1642237",
|
|
728
|
+
"references/audio.md": "74ca4d8c936e912eabf80d415cbc1eb8bc77648ca8e28bab6ccb4d7f247df3f2",
|
|
729
|
+
"references/binary.md": "e91c6a54924793f546541b2c67ae274954a58c6e317338698ff79de54920aa00",
|
|
730
|
+
"references/code.md": "0ecb8899f876a795f92d488c74d694888a4c3abe6e027b800b70ec45c878e233",
|
|
731
|
+
"references/data.md": "5491fec6cf3ac2b64c1b6a38f3087f54585fbe96ac536099c5e040111bd6b10d",
|
|
732
|
+
"references/email.md": "2c9a4167e645a718922d991b6ca95b2eccedabdbd6274a279589a5bc4fcb52a2",
|
|
733
|
+
"references/font.md": "e59dafd6a9b2ed472dedaf1568cc154ca2b29f2ddb0922efbdeee74210a87acc",
|
|
734
|
+
"references/image.md": "8eed977846d1de28f627a2b85df5f9b2c21d84da1516bab0aef424c3ac7bb99d",
|
|
735
|
+
"references/installs.md": "760537be3bae2431c326be9fb5b2fcaf223daebb5cd49dd17b09d8d0064d7cdd",
|
|
736
|
+
"references/notebook.md": "a457145e357fcdfbe2cf6ee8accbad7e5d044c39116405b4017b2a5f40d0ab0e",
|
|
737
|
+
"references/office.md": "d7cb6b81ed0dfde6bad400441e7c62053c63bf1741497c90f2c6c5db10bac54b",
|
|
738
|
+
"references/other.md": "b52ded38848ade208319ee61291af967bd77913aa1ea5a9728b1f4d899df4c09",
|
|
739
|
+
"references/output.md": "d083d007e12e099d8e7dde1bb6e09e426aa5fe8b5e566e9dd1abccdda9f9f183",
|
|
740
|
+
"references/pdf.md": "fc25c90c78175dcd897c7c5b32d8eb6f9f0787cd0d02c51d03739f835a5eee97",
|
|
741
|
+
"references/video.md": "51797a527013593f2dc520ecd3f517eddab994fdca36c0e4041e2fb80c20b683",
|
|
742
|
+
"references/web.md": "93a099a3a2b07d105c84c91cf04b771d8e8e06db37b2a3d622d57fa3437c6fc4",
|
|
743
|
+
"scripts/dl_3d.py": "4432fc18c7dedc867fc1d4d0c18214e05bb91660f46827d8f578fd570ff1c4e3",
|
|
744
|
+
"scripts/dl_adapt.py": "375c90690fc58c745e238d16c67194e7d75e26cde8b124e15600a64deb52a217",
|
|
745
|
+
"scripts/dl_ask.py": "15d03fcdd665f67a5b339ab65d7ceab01e8144b89220d0b111c46e5a108ba90c",
|
|
746
|
+
"scripts/dl_asr.py": "ed5387f16c47c9a3150484e2d900519e5d78da3e53fe49bdc62e373b3d55e346",
|
|
747
|
+
"scripts/dl_bins.py": "f2aed7eab50d1618523651b917d72bcc4fa03ff560922708e514b2e44c505b24",
|
|
748
|
+
"scripts/dl_binx.py": "9efe1c1973ae210047d56c8894a8be5b0816eff59d8f74307ef0b105a5631f06",
|
|
749
|
+
"scripts/dl_books.py": "ae7b2639104a383c186b143a7b88c187340ca523a7c83b3478bf4ede71a3ae66",
|
|
750
|
+
"scripts/dl_cal.py": "2a8025e58f3df548d86955144b5bd44062160c1e60002705167eca2ea40d5af4",
|
|
751
|
+
"scripts/dl_colmeta.py": "cc481f811e1e6eb7bf44e09ceb314efa2a6ff026c00b755c47dfc4016eb49c4f",
|
|
752
|
+
"scripts/dl_conf.py": "57e88d3bc7f10dc5e44cc0ee40c75c159499e3b55e73ae2fe5a06c21513fd66f",
|
|
753
|
+
"scripts/dl_core.py": "10463866de3cfe1fb1f30ba79719cbc852a57586b0f7e5eb07e55efe8efad543",
|
|
754
|
+
"scripts/dl_data.py": "a361f0c37523ab768b54cfc281103cd9df89afa65e9d6c9197e5354b6b2258f8",
|
|
755
|
+
"scripts/dl_delim.py": "56fcd1371f949fd11f16f1c7c1c4c5ccc8fd7f8f9ae02ac906cb0056803ff354",
|
|
756
|
+
"scripts/dl_docs.py": "b360e805ca0d6668c8aa66c8095f173cc97de96aa2c3c02e880e9ceb24c909a3",
|
|
757
|
+
"scripts/dl_drill.py": "390f2681b3b324cc81a15ea2b702f88391378a72267eaed1c6423a75c4946e6f",
|
|
758
|
+
"scripts/dl_drill_ext.py": "079667eb8a61583eab33fd2bdaf7693fcd042c86628fb8b629d98946b7a698b5",
|
|
759
|
+
"scripts/dl_extra.py": "7ef99507cbca314f76674c51df5aec4b0cadff6d367cbc8f0822ab9ac6abe0e2",
|
|
760
|
+
"scripts/dl_gate.py": "c2aa890798109de0e2accf8103146f1a0e6e5a13cc27ff7931f19b3ac9a87458",
|
|
761
|
+
"scripts/dl_geo.py": "bbba45f57594d99697367f42dfb2f536228bb6bd9e778c8ca124d2a769d80989",
|
|
762
|
+
"scripts/dl_logs.py": "1ecad902cdcc0ea12057c9ad7f0613af35cb1defc6136ebf16c49d8cef9040d9",
|
|
763
|
+
"scripts/dl_media.py": "23324d2d8b03141d7d64ea504a0e837eaab072089b52286313510d64d09f330a",
|
|
764
|
+
"scripts/dl_mediax.py": "dbd42ca799be599d2489c723c95ec2a51b394d307a312969ee50812861a05bc8",
|
|
765
|
+
"scripts/dl_mmeta.py": "f92851880371d2b8fef2d8f5aba56c364b647635d602b7d5bbf0ff62e5e18aac",
|
|
766
|
+
"scripts/dl_models.py": "861278163b38d37ae67542f03e69c6f327f2a48ad6f19be2e9fae0fe0d8ea612",
|
|
767
|
+
"scripts/dl_more.py": "cf7c2320462d7a3f21fc667375096caa8c739fb09f94a59d6f89312c272b92e9",
|
|
768
|
+
"scripts/dl_offx.py": "bce98dacbeedc91459126868b64a174422f2bf6c7a9a4239c57bc7b19319c79b",
|
|
769
|
+
"scripts/dl_pcap.py": "0014bc068049df7514ef48236922756ec8218c4a664a1e7c07cfacc659ee5ace",
|
|
770
|
+
"scripts/dl_pdffacts.py": "46fd50707c0b03ea92d61548ab6d92bfa133747333b89d1636f05309078b0c90",
|
|
771
|
+
"scripts/dl_pe.py": "764fc73d41415cfb10b77e3ed27794abfd9a02dbbdaec31618a0458b3a1e8261",
|
|
772
|
+
"scripts/dl_pick.py": "d15aaf8ffb272553d5e1be49554d0a702eda45203f75d109c491117e26c72e64",
|
|
773
|
+
"scripts/dl_prof.py": "5fef66a7c14021532d2158083622b64374d12936cad8c8ba4bc069e80791e0b6",
|
|
774
|
+
"scripts/dl_sample.py": "7fa9237f7b4e38cd1532ae6d9ce1154f63a06581fa6afee7a7944cfc40216856",
|
|
775
|
+
"scripts/dl_selftest.py": "c4573d674307d3cea617a786c547ded20b676ca9dc18e9b881b17648ec6ec6b9",
|
|
776
|
+
"scripts/dl_skel.py": "d1eedbd48a591d01b4f28f454af226f2d0075e50ffd077d1e80c7a70edcef161",
|
|
777
|
+
"scripts/dl_svg.py": "0e09a161ffd207dd8ed69528acdd398b65e4f9c44221c07db114664e6b29599a",
|
|
778
|
+
"scripts/dl_util.py": "f74b58c987f0f35ded011ec7c48bfe0c253e43343e17638eb59a7398f2f2e709",
|
|
779
|
+
"scripts/dl_view.py": "cdc7387579323f0f8a16765ad3798776a0e3a8071493cd3415a081f46cf63463",
|
|
780
|
+
"scripts/dl_write.py": "a6aca9809a7a7cdea014a0b68dc62ffe1d7741627ace7e67afed854f5b310236",
|
|
781
|
+
"scripts/dl_xl.py": "f94cfe3b79906e08649497d0114cfa0fc7267ba992cd481caf3d159d7949a9d2",
|
|
782
|
+
"scripts/look.py": "4410ed46eebbf95685ceb83326f5eb9bcfb6f8e9857de384c084c6ee0c76efc1"
|
|
783
|
+
}
|
|
784
|
+
}
|
|
785
|
+
],
|
|
786
|
+
"storgestudio-arena-create": [
|
|
787
|
+
{
|
|
788
|
+
"release": "0.8.0",
|
|
789
|
+
"revision": "3c28851e883e32f8921c94bcc4df1364f5cfa42f7b10e535849eb6ff8d9a7b96",
|
|
790
|
+
"files": {
|
|
791
|
+
"SKILL.md": "1696216f51d914ce374e5c47a248ead585556ae95633a0fd49d14f0365b0062a",
|
|
792
|
+
"agents/openai.yaml": "34569e63132f44d3a271b32a2f70b62886b94ef224aa84214dd2446d2f07c344",
|
|
793
|
+
"kit/README.md": "535beb661d413905fd669c6d1d9104026512765359b6451539170488cd14f9d3",
|
|
794
|
+
"kit/screenshots/caption-rank.png": "3a02d0bf0c5d9047649271bf4fc052cc2f8da8dee1fb17f031fcd79cea7f31c4",
|
|
795
|
+
"kit/screenshots/image-board.png": "3aa55effa50652f62991b316df1e151f4c576d6e9ae9adeda9c0e06451271b51",
|
|
796
|
+
"kit/screenshots/image-rank.png": "b0dc05828fc706c93e38a9561f4f1b4ba8565f9fbe4339c0a8b9376b8bbfff5c",
|
|
797
|
+
"kit/template/arena.json": "59500604e7864c01b8c441beea569e2165e7d38e42df677ec43af23c4478a450",
|
|
798
|
+
"kit/template/arena.py": "b086db96a7e11471a25ec0fb7eaf23d12260b391a557db7775e189dab893e5a6",
|
|
799
|
+
"kit/template/index.html": "19b37dbe299c89d3fa5a1936504fe9b20b54dc1eae06cfb983a1f915954f1194",
|
|
800
|
+
"kit/template/make_items.py": "bbacc3ad78bd503063fc0f53d92383c761021237badfe6331f98e6fdd1567b54",
|
|
801
|
+
"kit/template/selftest.py": "72d9697ea380614032fde91b996f880ff46f94896de6efb3960bf8ed439b3a86",
|
|
802
|
+
"kit/template/server.py": "34d00183f3ec333fee4ea365749fe1e30987c4cf775e03316cc702b16ca43b2c",
|
|
803
|
+
"references/arena-guide.md": "37008cbe46843106f4b7c1f5907d676aebbc279e7eb51d97bb5ae9eac0444045"
|
|
804
|
+
}
|
|
805
|
+
}
|
|
629
806
|
]
|
|
630
807
|
}
|
|
631
808
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description: Builds a fast blind-pairs arena so the user ranks any options by Elo per metric: models, settings, voices, captions, thumbnails, outfits. Grills first, then ships a local page and a board. Use to rank, compare or pick the best of many options by taste. Do not use for 2-3 options (just ask), for measurable checks (script them), or to judge one draft against a reference.
|
|
2
|
+
name: sigmacreatearena
|
|
3
|
+
description: 'Builds a fast blind-pairs arena so the user ranks any options by Elo per metric: models, settings, voices, captions, thumbnails, outfits. Grills first, then ships a local page and a board. Use to rank, compare or pick the best of many options by taste. Do not use for 2-3 options (just ask), for measurable checks (script them), or to judge one draft against a reference.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# SigmaCreateArena
|
|
7
7
|
|
|
8
8
|
An arena shows the user two options side by side, names hidden, sides random. They pick per metric. A Bradley-Terry fit turns the picks into an Elo board per metric. This skill grills the user, builds the arena from a bundled kit, hands over the link, and reads the board back.
|
|
9
9
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
interface:
|
|
2
|
-
display_name:
|
|
2
|
+
display_name: SigmaCreateArena
|
|
3
3
|
short_description: Blind-pairs arena that ranks any options by Elo per metric
|
|
4
|
-
default_prompt: Use $
|
|
4
|
+
default_prompt: Use $sigmacreatearena to build a blind-pairs arena that
|
|
5
5
|
ranks these options by Elo per metric.
|
|
6
6
|
policy:
|
|
7
7
|
products:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Arena kit
|
|
2
2
|
|
|
3
|
-
A blind-pairs ranking page for anything: models, settings, captions, thumbnails, voices, outfits. The full guide (rules, why, lessons) is [`../references/arena-guide.md`](../references/arena-guide.md); the skill is `
|
|
3
|
+
A blind-pairs ranking page for anything: models, settings, captions, thumbnails, voices, outfits. The full guide (rules, why, lessons) is [`../references/arena-guide.md`](../references/arena-guide.md); the skill is `sigmacreatearena`.
|
|
4
4
|
|
|
5
5
|
```powershell
|
|
6
6
|
# 1. copy the template into the project (never edit the template for one project)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
An **arena** shows the user two options side by side, names hidden, sides random, and asks "which is better?" on one or more metrics. From the user's picks it builds an Elo board (the LMArena method) per metric and overall. It works for anything that can be shown or played: AI models and settings (images, video clips, voices, music), captions, titles, hooks, thumbnails, outfits, logos, intros, script lines.
|
|
4
4
|
|
|
5
|
-
Built from two real arenas: a video-model arena (400 picks) and an image-model arena (200 picks). The kit is [`../kit/`](../kit/README.md): copy `template/` into the project, fill `arena.json`, run `python server.py`. Skill: **`
|
|
5
|
+
Built from two real arenas: a video-model arena (400 picks) and an image-model arena (200 picks). The kit is [`../kit/`](../kit/README.md): copy `template/` into the project, fill `arena.json`, run `python server.py`. Skill: **`sigmacreatearena`** (it grills the user first).
|
|
6
6
|
|
|
7
7
|
Use the arena for / keep elsewhere:
|
|
8
8
|
|
|
@@ -45,7 +45,7 @@ Every row below is a 'Not looked at' row when the tool is absent. Nothing needs
|
|
|
45
45
|
| cairosvg | python package | rendering svg | pip install cairosvg |
|
|
46
46
|
| rapidocr_onnxruntime | python package | OCR of video frames, images, scanned pages | pip install rapidocr-onnxruntime |
|
|
47
47
|
| lief | python package | real Authenticode verification (chain and hash), imphash | pip install lief |
|
|
48
|
-
| oletools | python package | VBA
|
|
48
|
+
| oletools | python package | fuller VBA analysis (the stdlib reader already decompresses the modules, lists auto-run routines, suspicious calls and strings) | pip install oletools |
|
|
49
49
|
| python_calamine | python package | very large xlsx files | pip install python-calamine |
|
|
50
50
|
| dnfile | python package | .NET assembly names, references, types | pip install dnfile |
|
|
51
51
|
| pymupdf4llm | python package | (reserved) PDF to markdown with tables | pip install pymupdf4llm |
|
|
@@ -120,7 +120,14 @@ def look_3d(look):
|
|
|
120
120
|
look.flag("PARSE-ERROR", "glTF", f"{type(e).__name__}: {e}"[:100], "")
|
|
121
121
|
elif st in ("stl", "stl-ascii"):
|
|
122
122
|
tris = parse_stl(b, st == "stl-ascii")
|
|
123
|
-
|
|
123
|
+
hdr = ""
|
|
124
|
+
if st != "stl-ascii":
|
|
125
|
+
hdr = b[:80].split(b"\0")[0].decode("latin-1").strip()
|
|
126
|
+
hdr = f" Header text: {hdr!r}." if hdr else " Empty 80-byte header."
|
|
127
|
+
else:
|
|
128
|
+
first = b[:200].decode("latin-1").splitlines()[0].strip()
|
|
129
|
+
hdr = f" First line: {first!r}."
|
|
130
|
+
look.line(f"STL ({'ASCII' if st == 'stl-ascii' else 'binary'}): {len(tris)} triangles.{hdr} STL has no units and no colour.")
|
|
124
131
|
elif st == "obj":
|
|
125
132
|
tris, c = parse_obj(b.decode("utf-8", "replace"))
|
|
126
133
|
look.fact("vertices", c["v"])
|
|
@@ -158,6 +165,8 @@ def look_3d(look):
|
|
|
158
165
|
look.fact("triangles", len(tris))
|
|
159
166
|
look.fact("bbox", stats["bbox"])
|
|
160
167
|
look.line(f"{len(tris)} triangles; bounding box {stats['bbox']['min']} to {stats['bbox']['max']} (size {stats['bbox']['size']}).")
|
|
168
|
+
look.line(f"Mesh measures: surface area {stats['surface_area']:,.3f}, signed volume {stats['signed_volume']:,.3f} (a true volume only when watertight), "
|
|
169
|
+
+ (f"centroid {stats['centroid']}, " if stats.get("centroid") else "") + f"{stats['unique_vertices']} unique vertices, {stats['degenerate_triangles']} zero-area triangles (units are those of the file).", 61)
|
|
161
170
|
if stats.get("watertight") is not None:
|
|
162
171
|
look.fact("watertight", stats["watertight"])
|
|
163
172
|
look.line("Watertight (every edge shared by exactly two triangles): " + ("yes" if stats["watertight"] else f"NO ({stats['open_edges']} open edges)"))
|
|
@@ -257,6 +266,27 @@ def mesh_stats(look, tris):
|
|
|
257
266
|
mn = [round(min(xs), 4), round(min(ys), 4), round(min(zs), 4)]
|
|
258
267
|
mx = [round(max(xs), 4), round(max(ys), 4), round(max(zs), 4)]
|
|
259
268
|
out = {"triangles": len(tris), "bbox": {"min": mn, "max": mx, "size": [round(a - b, 4) for a, b in zip(mx, mn)]}}
|
|
269
|
+
area = vol = 0.0
|
|
270
|
+
cx = cy = cz = 0.0
|
|
271
|
+
degenerate = 0
|
|
272
|
+
for a, b, c in tris:
|
|
273
|
+
ux, uy, uz = b[0] - a[0], b[1] - a[1], b[2] - a[2]
|
|
274
|
+
vx, vy, vz = c[0] - a[0], c[1] - a[1], c[2] - a[2]
|
|
275
|
+
nx, ny, nz = uy * vz - uz * vy, uz * vx - ux * vz, ux * vy - uy * vx
|
|
276
|
+
ar = 0.5 * math.sqrt(nx * nx + ny * ny + nz * nz)
|
|
277
|
+
if ar < 1e-12:
|
|
278
|
+
degenerate += 1
|
|
279
|
+
area += ar
|
|
280
|
+
d = (a[0] * (b[1] * c[2] - b[2] * c[1]) - a[1] * (b[0] * c[2] - b[2] * c[0]) + a[2] * (b[0] * c[1] - b[1] * c[0])) / 6.0
|
|
281
|
+
vol += d
|
|
282
|
+
cx += d * (a[0] + b[0] + c[0]) / 4.0
|
|
283
|
+
cy += d * (a[1] + b[1] + c[1]) / 4.0
|
|
284
|
+
cz += d * (a[2] + b[2] + c[2]) / 4.0
|
|
285
|
+
out["surface_area"] = round(area, 4)
|
|
286
|
+
out["signed_volume"] = round(vol, 4)
|
|
287
|
+
out["centroid"] = [round(cx / vol, 4), round(cy / vol, 4), round(cz / vol, 4)] if abs(vol) > 1e-12 else None
|
|
288
|
+
out["degenerate_triangles"] = degenerate
|
|
289
|
+
out["unique_vertices"] = len({(round(v[0] * 1e5), round(v[1] * 1e5), round(v[2] * 1e5)) for t in tris for v in t}) if len(tris) <= MAX_TRIS_PARSE else None
|
|
260
290
|
if len(tris) <= MAX_TRIS_PARSE:
|
|
261
291
|
q = lambda v: (round(v[0] * 1e5), round(v[1] * 1e5), round(v[2] * 1e5))
|
|
262
292
|
edges = {}
|
|
@@ -108,6 +108,15 @@ def look_avro(look):
|
|
|
108
108
|
break
|
|
109
109
|
look.write_text("sample.json", json.dumps(rows, indent=1, default=str)[:20000], "the first 5 records", "json", value=6)
|
|
110
110
|
look.step("sample records", "fastavro")
|
|
111
|
+
if not look.quick and records:
|
|
112
|
+
import dl_data as D
|
|
113
|
+
names = [n for n, _t in fields]
|
|
114
|
+
|
|
115
|
+
def rowsgen():
|
|
116
|
+
with open(look.path, "rb") as f2:
|
|
117
|
+
for k, rec in enumerate(fa.reader(f2), 1):
|
|
118
|
+
yield k, [json.dumps(rec.get(n), default=str, sort_keys=True) if isinstance(rec.get(n), (list, dict)) else rec.get(n) for n in names]
|
|
119
|
+
D.table_profile(look, "Records", names, rowsgen, "record", records, 84, 28)
|
|
111
120
|
except Exception as e:
|
|
112
121
|
look.fail("record values", "fastavro", e)
|
|
113
122
|
|
|
@@ -327,8 +336,10 @@ def summarize_olevba(results):
|
|
|
327
336
|
|
|
328
337
|
def olevba_facts(look, data, name):
|
|
329
338
|
m = look.mod("oletools")
|
|
330
|
-
if not m:
|
|
331
|
-
|
|
339
|
+
if not m: # the standard-library reader: decompresses the VBA modules itself
|
|
340
|
+
import dl_vba
|
|
341
|
+
if not dl_vba.vba_facts(look, data, name):
|
|
342
|
+
look.skip("macro source: full oletools analysis", "python package oletools not importable" if not look.no_tools else "disabled by --no-tools", "oletools")
|
|
332
343
|
return
|
|
333
344
|
try:
|
|
334
345
|
from oletools.olevba import VBA_Parser
|
|
@@ -348,6 +359,8 @@ def olevba_facts(look, data, name):
|
|
|
348
359
|
look.step("macro analysis", "oletools")
|
|
349
360
|
except Exception as e:
|
|
350
361
|
look.fail("macro analysis", "oletools", e)
|
|
362
|
+
import dl_vba
|
|
363
|
+
dl_vba.vba_facts(look, data, name)
|
|
351
364
|
|
|
352
365
|
|
|
353
366
|
# ================================================================= glTF validator
|