trace-to-skill 0.1.109 → 0.1.111

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/README.md CHANGED
@@ -527,6 +527,7 @@ Stable machine-readable contracts are published with the npm package and release
527
527
  - [`schemas/usage-evidence-result.schema.json`](schemas/usage-evidence-result.schema.json) describes `trace-to-skill usage-evidence --format json`.
528
528
  - [`schemas/process-audit-result.schema.json`](schemas/process-audit-result.schema.json) describes `trace-to-skill process-audit --format json`.
529
529
  - [`schemas/issue-map-result.schema.json`](schemas/issue-map-result.schema.json) describes `trace-to-skill issue-map --format json`.
530
+ - [`schemas/duplicate-audit-action-outputs.schema.json`](schemas/duplicate-audit-action-outputs.schema.json) describes the duplicate-audit Action output mapping in `fixtures/duplicate-audit-action-outputs.json`.
530
531
  - [`schemas/workspace-checkpoint-result.schema.json`](schemas/workspace-checkpoint-result.schema.json) describes `trace-to-skill checkpoint --format json`.
531
532
 
532
533
  These schemas let downstream Codex workflows, dashboards, and CI bots consume reports without scraping Markdown.
@@ -559,7 +560,7 @@ jobs:
559
560
  issues: write
560
561
  steps:
561
562
  - uses: actions/checkout@v5
562
- - uses: grnbtqdbyx-create/trace-to-skill@v0.1.109
563
+ - uses: grnbtqdbyx-create/trace-to-skill@v0.1.111
563
564
  with:
564
565
  mode: all
565
566
  doctor-threshold: "85"
@@ -608,7 +609,7 @@ Composite action usage:
608
609
 
609
610
  ```yaml
610
611
  - id: trace-to-skill
611
- uses: grnbtqdbyx-create/trace-to-skill@v0.1.109
612
+ uses: grnbtqdbyx-create/trace-to-skill@v0.1.111
612
613
  with:
613
614
  mode: all
614
615
  doctor-threshold: "85"
@@ -626,7 +627,7 @@ Issue-map action usage for direct GitHub issue demand mining:
626
627
 
627
628
  ```yaml
628
629
  - id: codex-issue-map
629
- uses: grnbtqdbyx-create/trace-to-skill@v0.1.109
630
+ uses: grnbtqdbyx-create/trace-to-skill@v0.1.111
630
631
  with:
631
632
  mode: issue-map
632
633
  issue-map-repo: openai/codex
@@ -643,7 +644,7 @@ Issue-heat action usage for recency-weighted GitHub issue movement:
643
644
 
644
645
  ```yaml
645
646
  - id: codex-issue-heat
646
- uses: grnbtqdbyx-create/trace-to-skill@v0.1.109
647
+ uses: grnbtqdbyx-create/trace-to-skill@v0.1.111
647
648
  with:
648
649
  mode: issue-heat
649
650
  issue-heat-repo: openai/codex
@@ -661,7 +662,7 @@ Duplicate-audit action usage for checking Codex Action duplicate suggestions:
661
662
 
662
663
  ```yaml
663
664
  - id: codex-duplicate-audit
664
- uses: grnbtqdbyx-create/trace-to-skill@v0.1.109
665
+ uses: grnbtqdbyx-create/trace-to-skill@v0.1.111
665
666
  with:
666
667
  mode: duplicate-audit
667
668
  duplicate-audit-repo: openai/codex
@@ -717,9 +718,26 @@ Action outputs:
717
718
  | `duplicate-audit-report` | Markdown duplicate-audit report path |
718
719
  | `duplicate-audit-json` | JSON duplicate-audit report path |
719
720
 
721
+ Duplicate-audit Action output mapping:
722
+
723
+ | Output | Step output | Source |
724
+ | --- | --- | --- |
725
+ | `duplicate-audit-candidates` | `candidates` | `summary.candidateCount` |
726
+ | `duplicate-audit-likely` | `likely` | `summary.likelyDuplicates` |
727
+ | `duplicate-audit-related` | `related` | `summary.relatedNotDuplicates` |
728
+ | `duplicate-audit-needs-review` | `needs-review` | `summary.needsHumanReview` |
729
+ | `duplicate-audit-weak` | `weak` | `summary.weakMatches` |
730
+ | `duplicate-audit-top-verdict` | `top-verdict` | `candidates[].verdict` |
731
+ | `duplicate-audit-report` | `report` | `trace-to-skill-duplicate-audit.md` |
732
+ | `duplicate-audit-json` | `json` | `trace-to-skill-duplicate-audit.json` |
733
+
734
+ The machine-readable mapping lives in [`fixtures/duplicate-audit-action-outputs.json`](fixtures/duplicate-audit-action-outputs.json) and is described by [`schemas/duplicate-audit-action-outputs.schema.json`](schemas/duplicate-audit-action-outputs.schema.json). The regression test checks that JSON-derived outputs point at fields in [`schemas/duplicate-audit-result.schema.json`](schemas/duplicate-audit-result.schema.json).
735
+
720
736
  By default, generated reports are also appended to the GitHub Actions Job Summary. Set `job-summary: "false"` to disable that UI output.
721
737
 
722
- Tagged Action releases build and run the CLI from `$GITHUB_ACTION_PATH`, so a workflow pinned to a release tag such as `@v0.1.109` executes that release's checked-out source instead of pulling the default branch at runtime.
738
+ Tagged Action releases build and run the CLI from `$GITHUB_ACTION_PATH`, so a workflow pinned to a release tag such as `@v0.1.111` executes that release's checked-out source instead of pulling the default branch at runtime.
739
+
740
+ Action inputs are passed into bash steps through environment variables before the CLI receives them. The regression fixture at `fixtures/action-malicious-inputs.json` keeps quote, newline, command-substitution, and shell-separator examples out of `run:` scripts so workflow inputs are treated as data.
723
741
 
724
742
  ## Codex Skill
725
743
 
@@ -12,6 +12,21 @@ trace-to-skill duplicate-audit --repo openai/codex --issue 25507 --format markdo
12
12
  trace-to-skill duplicate-audit duplicate-audit.json --format json
13
13
  ```
14
14
 
15
+ ## Action Output Mapping
16
+
17
+ | Output | Step output | Source |
18
+ | --- | --- | --- |
19
+ | `duplicate-audit-candidates` | `candidates` | `summary.candidateCount` |
20
+ | `duplicate-audit-likely` | `likely` | `summary.likelyDuplicates` |
21
+ | `duplicate-audit-related` | `related` | `summary.relatedNotDuplicates` |
22
+ | `duplicate-audit-needs-review` | `needs-review` | `summary.needsHumanReview` |
23
+ | `duplicate-audit-weak` | `weak` | `summary.weakMatches` |
24
+ | `duplicate-audit-top-verdict` | `top-verdict` | `candidates[].verdict` |
25
+ | `duplicate-audit-report` | `report` | `trace-to-skill-duplicate-audit.md` |
26
+ | `duplicate-audit-json` | `json` | `trace-to-skill-duplicate-audit.json` |
27
+
28
+ The machine-readable mapping lives in `fixtures/duplicate-audit-action-outputs.json`; `schemas/duplicate-audit-action-outputs.schema.json` describes that fixture, and JSON-derived outputs must point at fields in `schemas/duplicate-audit-result.schema.json`.
29
+
15
30
  ## Summary
16
31
 
17
32
  - Candidates: 2
@@ -3,7 +3,7 @@
3
3
  | Field | Value |
4
4
  | --- | --- |
5
5
  | Repository | https://github.com/grnbtqdbyx-create/trace-to-skill |
6
- | Package | trace-to-skill@0.1.109 |
6
+ | Package | trace-to-skill@0.1.111 |
7
7
  | License | Apache-2.0 |
8
8
  | Codex readiness | ready (100/100) |
9
9
  | Benchmark | pass, 46 cases |
@@ -27,7 +27,7 @@ API credits would power optional maintainer workflows on top of the local determ
27
27
  ## Evidence
28
28
 
29
29
  - Public repository: https://github.com/grnbtqdbyx-create/trace-to-skill
30
- - One-command package: npx trace-to-skill@0.1.109
30
+ - One-command package: npx trace-to-skill@0.1.111
31
31
  - Open-source license: Apache-2.0
32
32
  - Codex readiness doctor: ready, 100/100, 0 failed checks.
33
33
  - Public fixture benchmark: pass, 46 cases.
package/docs/USE_CASES.md CHANGED
@@ -61,7 +61,7 @@ What it proves:
61
61
  Recommended CI surface:
62
62
 
63
63
  ```yaml
64
- - uses: grnbtqdbyx-create/trace-to-skill@v0.1.109
64
+ - uses: grnbtqdbyx-create/trace-to-skill@v0.1.111
65
65
  with:
66
66
  mode: all
67
67
  doctor-threshold: "85"
@@ -74,7 +74,7 @@ Recommended CI surface:
74
74
  Duplicate-audit Action mode can also run from CI when you want a stable job summary for Codex Action duplicate suggestions:
75
75
 
76
76
  ```yaml
77
- - uses: grnbtqdbyx-create/trace-to-skill@v0.1.109
77
+ - uses: grnbtqdbyx-create/trace-to-skill@v0.1.111
78
78
  with:
79
79
  mode: duplicate-audit
80
80
  duplicate-audit-repo: openai/codex
@@ -83,6 +83,8 @@ Duplicate-audit Action mode can also run from CI when you want a stable job summ
83
83
  github-token: ${{ github.token }}
84
84
  ```
85
85
 
86
+ The published Action keeps user-controlled inputs out of shell scripts by passing them through step environment variables before invoking the CLI. `fixtures/action-malicious-inputs.json` covers quote, newline, command-substitution, and shell-separator cases so that future Action edits keep those values as data.
87
+
86
88
  ## 3. GitHub Issue Demand Mining
87
89
 
88
90
  Use this when you want to see what Codex users are actually complaining about on GitHub before choosing the next fixture, report template, or diagnostic helper.
@@ -0,0 +1,41 @@
1
+ {
2
+ "purpose": "Regression fixture for composite Action inputs that must be treated as data, not shell syntax.",
3
+ "cases": [
4
+ {
5
+ "name": "semicolon command separator in traces path",
6
+ "input": "traces",
7
+ "env": "INPUT_TRACES",
8
+ "value": "runs; echo PWNED"
9
+ },
10
+ {
11
+ "name": "command substitution in doctor path",
12
+ "input": "doctor-path",
13
+ "env": "INPUT_DOCTOR_PATH",
14
+ "value": "$(touch /tmp/trace-to-skill-pwned)"
15
+ },
16
+ {
17
+ "name": "newline injection in issue-map repository",
18
+ "input": "issue-map-repo",
19
+ "env": "INPUT_ISSUE_MAP_REPO",
20
+ "value": "openai/codex\nmalicious=true"
21
+ },
22
+ {
23
+ "name": "double quote in duplicate candidates",
24
+ "input": "duplicate-audit-candidates",
25
+ "env": "INPUT_DUPLICATE_AUDIT_CANDIDATES",
26
+ "value": "25391,\"25488\""
27
+ },
28
+ {
29
+ "name": "single quote in comment repository",
30
+ "input": "issue-heat-comment-repository",
31
+ "env": "INPUT_ISSUE_HEAT_COMMENT_REPOSITORY",
32
+ "value": "owner/repo' --token leaked"
33
+ },
34
+ {
35
+ "name": "environment file redirection text in token",
36
+ "input": "github-token",
37
+ "env": "INPUT_GITHUB_TOKEN",
38
+ "value": "ghs_token >> $GITHUB_ENV"
39
+ }
40
+ ]
41
+ }
@@ -0,0 +1,70 @@
1
+ {
2
+ "$schema": "../schemas/duplicate-audit-action-outputs.schema.json",
3
+ "action": "duplicate-audit",
4
+ "outputs": [
5
+ {
6
+ "actionOutput": "duplicate-audit-candidates",
7
+ "stepOutput": "candidates",
8
+ "kind": "json-field",
9
+ "jsonPath": "summary.candidateCount",
10
+ "type": "integer",
11
+ "description": "Number of duplicate candidates checked."
12
+ },
13
+ {
14
+ "actionOutput": "duplicate-audit-likely",
15
+ "stepOutput": "likely",
16
+ "kind": "json-field",
17
+ "jsonPath": "summary.likelyDuplicates",
18
+ "type": "integer",
19
+ "description": "Number of candidates scored as likely duplicates."
20
+ },
21
+ {
22
+ "actionOutput": "duplicate-audit-related",
23
+ "stepOutput": "related",
24
+ "kind": "json-field",
25
+ "jsonPath": "summary.relatedNotDuplicates",
26
+ "type": "integer",
27
+ "description": "Number of candidates that are related but not exact duplicates."
28
+ },
29
+ {
30
+ "actionOutput": "duplicate-audit-needs-review",
31
+ "stepOutput": "needs-review",
32
+ "kind": "json-field",
33
+ "jsonPath": "summary.needsHumanReview",
34
+ "type": "integer",
35
+ "description": "Number of candidates that need maintainer review."
36
+ },
37
+ {
38
+ "actionOutput": "duplicate-audit-weak",
39
+ "stepOutput": "weak",
40
+ "kind": "json-field",
41
+ "jsonPath": "summary.weakMatches",
42
+ "type": "integer",
43
+ "description": "Number of weak duplicate matches."
44
+ },
45
+ {
46
+ "actionOutput": "duplicate-audit-top-verdict",
47
+ "stepOutput": "top-verdict",
48
+ "kind": "json-field",
49
+ "jsonPath": "candidates[].verdict",
50
+ "type": "string",
51
+ "description": "Highest-confidence duplicate verdict, or an empty string when there are no candidates."
52
+ },
53
+ {
54
+ "actionOutput": "duplicate-audit-report",
55
+ "stepOutput": "report",
56
+ "kind": "artifact-path",
57
+ "path": "trace-to-skill-duplicate-audit.md",
58
+ "type": "path",
59
+ "description": "Markdown duplicate-audit report path generated by the Action."
60
+ },
61
+ {
62
+ "actionOutput": "duplicate-audit-json",
63
+ "stepOutput": "json",
64
+ "kind": "artifact-path",
65
+ "path": "trace-to-skill-duplicate-audit.json",
66
+ "type": "path",
67
+ "description": "JSON duplicate-audit report path conforming to schemas/duplicate-audit-result.schema.json."
68
+ }
69
+ ]
70
+ }
package/llms.txt CHANGED
@@ -146,7 +146,7 @@ gh issue list --repo openai/codex --state all --limit 100 --json number,title,bo
146
146
  ## GitHub Action
147
147
 
148
148
  ```yaml
149
- - uses: grnbtqdbyx-create/trace-to-skill@v0.1.109
149
+ - uses: grnbtqdbyx-create/trace-to-skill@v0.1.111
150
150
  with:
151
151
  mode: all
152
152
  doctor-threshold: "85"
@@ -159,7 +159,7 @@ gh issue list --repo openai/codex --state all --limit 100 --json number,title,bo
159
159
  ## Weekly Codex Issue Radar
160
160
 
161
161
  ```yaml
162
- - uses: grnbtqdbyx-create/trace-to-skill@v0.1.109
162
+ - uses: grnbtqdbyx-create/trace-to-skill@v0.1.111
163
163
  with:
164
164
  mode: issue-map
165
165
  issue-map-repo: openai/codex
@@ -174,7 +174,7 @@ gh issue list --repo openai/codex --state all --limit 100 --json number,title,bo
174
174
  Duplicate audit Action mode:
175
175
 
176
176
  ```yaml
177
- - uses: grnbtqdbyx-create/trace-to-skill@v0.1.109
177
+ - uses: grnbtqdbyx-create/trace-to-skill@v0.1.111
178
178
  with:
179
179
  mode: duplicate-audit
180
180
  duplicate-audit-repo: openai/codex
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trace-to-skill",
3
- "version": "0.1.109",
3
+ "version": "0.1.111",
4
4
  "description": "Turn failed AI coding-agent runs into reusable AGENTS.md rules, SKILL.md files, and eval evidence.",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -0,0 +1,90 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://raw.githubusercontent.com/grnbtqdbyx-create/trace-to-skill/main/schemas/duplicate-audit-action-outputs.schema.json",
4
+ "title": "trace-to-skill duplicate-audit Action output mapping",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["action", "outputs"],
8
+ "properties": {
9
+ "action": {
10
+ "type": "string",
11
+ "const": "duplicate-audit"
12
+ },
13
+ "outputs": {
14
+ "type": "array",
15
+ "minItems": 1,
16
+ "items": {
17
+ "$ref": "#/$defs/outputMapping"
18
+ }
19
+ }
20
+ },
21
+ "$defs": {
22
+ "outputMapping": {
23
+ "type": "object",
24
+ "additionalProperties": false,
25
+ "required": ["actionOutput", "stepOutput", "kind", "description"],
26
+ "properties": {
27
+ "actionOutput": {
28
+ "type": "string",
29
+ "pattern": "^duplicate-audit-[a-z0-9-]+$"
30
+ },
31
+ "stepOutput": {
32
+ "type": "string",
33
+ "pattern": "^[a-z0-9-]+$"
34
+ },
35
+ "kind": {
36
+ "type": "string",
37
+ "enum": ["json-field", "artifact-path"]
38
+ },
39
+ "jsonPath": {
40
+ "type": "string",
41
+ "pattern": "^[A-Za-z0-9_.\\[\\]-]+$"
42
+ },
43
+ "path": {
44
+ "type": "string"
45
+ },
46
+ "type": {
47
+ "type": "string",
48
+ "enum": ["integer", "string", "path"]
49
+ },
50
+ "description": {
51
+ "type": "string"
52
+ }
53
+ },
54
+ "allOf": [
55
+ {
56
+ "if": {
57
+ "properties": {
58
+ "kind": {
59
+ "const": "json-field"
60
+ }
61
+ },
62
+ "required": ["kind"]
63
+ },
64
+ "then": {
65
+ "required": ["jsonPath", "type"],
66
+ "not": {
67
+ "required": ["path"]
68
+ }
69
+ }
70
+ },
71
+ {
72
+ "if": {
73
+ "properties": {
74
+ "kind": {
75
+ "const": "artifact-path"
76
+ }
77
+ },
78
+ "required": ["kind"]
79
+ },
80
+ "then": {
81
+ "required": ["path", "type"],
82
+ "not": {
83
+ "required": ["jsonPath"]
84
+ }
85
+ }
86
+ }
87
+ ]
88
+ }
89
+ }
90
+ }