trace-to-skill 0.1.46 → 0.1.48

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
@@ -11,6 +11,7 @@
11
11
  Turn failed AI coding-agent runs into reusable `AGENTS.md` rules, `SKILL.md` files, and eval evidence.
12
12
 
13
13
  ```bash
14
+ npx trace-to-skill demo
14
15
  npx trace-to-skill doctor .
15
16
  npx trace-to-skill lint-agents .
16
17
  npx trace-to-skill analyze ./runs
@@ -20,6 +21,7 @@ npx trace-to-skill suggest ./runs --target agents-md
20
21
  npx trace-to-skill eval ./runs --threshold 80
21
22
  npx trace-to-skill benchmark
22
23
  npx trace-to-skill scorecard .
24
+ npx trace-to-skill oss-brief .
23
25
  npx trace-to-skill scorecard-comment . --dry-run
24
26
  npx trace-to-skill guard-github-event "$GITHUB_EVENT_PATH"
25
27
  npx trace-to-skill comment ./runs --dry-run
@@ -41,6 +43,8 @@ It is built for maintainers using Codex, Claude Code, Cursor, Copilot coding age
41
43
  Use it when you need to:
42
44
 
43
45
  - **Gate Codex-ready PRs:** run `trace-to-skill scorecard .` in CI and post a reviewer-friendly readiness comment.
46
+ - **Try it before collecting traces:** run `trace-to-skill demo` to generate a real Codex issue report from packaged public fixtures in one command.
47
+ - **Prepare OpenAI OSS evidence:** run `trace-to-skill oss-brief .` to generate application-ready proof, 500-character summary fields, readiness score, benchmark status, license, and next steps.
44
48
  - **Harden agent instructions:** run `trace-to-skill lint-agents .` to catch missing `AGENTS.md`, conflicting tool instructions, missing includes, nested instruction drift, encoding issues, and risky MCP config.
45
49
  - **Protect agent context:** run `trace-to-skill guard-github-event "$GITHUB_EVENT_PATH"` before feeding issue, PR, comment, discussion, check-run, or commit text into an agent.
46
50
  - **Share failed traces safely:** run `trace-to-skill redact ./runs --output redacted-runs` before publishing anonymized failure fixtures.
@@ -85,6 +89,7 @@ Open-source maintainers do not need more AI-generated noise. They need agents th
85
89
  - Did a model/runtime latency regression make Fast behave like Standard, stall before first output, or spend minutes in thinking, search, read, or compaction phases?
86
90
  - Did repeated approval prompts make a safer scoped mode unusable or require huge per-tool MCP approval configs?
87
91
  - Can the failure be reported to OpenAI with line-linked evidence, redaction notes, and the exact diagnostics maintainers need?
92
+ - Can we produce an application-ready OpenAI OSS brief from the repo's actual license, distribution, readiness, and benchmark state?
88
93
 
89
94
  ## Example Output
90
95
 
@@ -189,6 +194,17 @@ Requires Node.js 20+.
189
194
 
190
195
  ## CLI
191
196
 
197
+ Try a packaged public demo before collecting private traces:
198
+
199
+ ```bash
200
+ trace-to-skill demo
201
+ trace-to-skill demo --list
202
+ trace-to-skill demo latency-regression
203
+ trace-to-skill demo --format json
204
+ ```
205
+
206
+ See this repository's generated demo in [docs/DEMO.md](docs/DEMO.md).
207
+
192
208
  Check whether a repository is ready for Codex automation:
193
209
 
194
210
  ```bash
@@ -274,6 +290,16 @@ trace-to-skill scorecard . --format json
274
290
 
275
291
  See this repository's current public scorecard in [docs/SCORECARD.md](docs/SCORECARD.md).
276
292
 
293
+ Generate an OpenAI OSS support/application brief:
294
+
295
+ ```bash
296
+ trace-to-skill oss-brief .
297
+ trace-to-skill oss-brief . --format json
298
+ trace-to-skill oss-brief . --output docs/OPENAI_OSS_BRIEF.md
299
+ ```
300
+
301
+ See this repository's current brief in [docs/OPENAI_OSS_BRIEF.md](docs/OPENAI_OSS_BRIEF.md).
302
+
277
303
  To map a Codex problem to the right failure class and report command, see [docs/CODEX_ISSUE_MAP.md](docs/CODEX_ISSUE_MAP.md).
278
304
 
279
305
  Post or update a pull request comment with the combined scorecard:
@@ -334,6 +360,7 @@ Stable machine-readable contracts are published with the npm package and release
334
360
  - [`schemas/doctor-result.schema.json`](schemas/doctor-result.schema.json) describes `trace-to-skill doctor --format json`.
335
361
  - [`schemas/redact-result.schema.json`](schemas/redact-result.schema.json) describes `trace-to-skill redact --format json`.
336
362
  - [`schemas/scorecard-result.schema.json`](schemas/scorecard-result.schema.json) describes `trace-to-skill scorecard --format json`.
363
+ - [`schemas/oss-brief-result.schema.json`](schemas/oss-brief-result.schema.json) describes `trace-to-skill oss-brief --format json`.
337
364
 
338
365
  These schemas let downstream Codex workflows, dashboards, and CI bots consume reports without scraping Markdown.
339
366
 
@@ -365,7 +392,7 @@ jobs:
365
392
  issues: write
366
393
  steps:
367
394
  - uses: actions/checkout@v5
368
- - uses: grnbtqdbyx-create/trace-to-skill@v0.1.46
395
+ - uses: grnbtqdbyx-create/trace-to-skill@v0.1.48
369
396
  with:
370
397
  mode: all
371
398
  doctor-threshold: "85"
@@ -414,7 +441,7 @@ Composite action usage:
414
441
 
415
442
  ```yaml
416
443
  - id: trace-to-skill
417
- uses: grnbtqdbyx-create/trace-to-skill@v0.1.46
444
+ uses: grnbtqdbyx-create/trace-to-skill@v0.1.48
418
445
  with:
419
446
  mode: all
420
447
  doctor-threshold: "85"
@@ -456,7 +483,7 @@ Action outputs:
456
483
 
457
484
  By default, generated reports are also appended to the GitHub Actions Job Summary. Set `job-summary: "false"` to disable that UI output.
458
485
 
459
- Tagged Action releases build and run the CLI from `$GITHUB_ACTION_PATH`, so a workflow pinned to a release tag such as `@v0.1.46` executes that release's checked-out source instead of pulling the default branch at runtime.
486
+ Tagged Action releases build and run the CLI from `$GITHUB_ACTION_PATH`, so a workflow pinned to a release tag such as `@v0.1.48` executes that release's checked-out source instead of pulling the default branch at runtime.
460
487
 
461
488
  ## Codex Skill
462
489
 
@@ -504,6 +531,7 @@ The goal is not to let agents autonomously rewrite project policy. The goal is t
504
531
  - `trace-to-skill benchmark` for public fixture scorecards
505
532
  - GitHub Action `benchmark` and `all` modes
506
533
  - `trace-to-skill scorecard` for combined reviewer proof
534
+ - `trace-to-skill oss-brief` for OpenAI OSS application-ready evidence
507
535
  - Scorecard JSON schema and Action outputs
508
536
  - Tag-pinned GitHub Action runtime via `$GITHUB_ACTION_PATH`
509
537
  - Scorecard PR comments with update-in-place marker
package/dist/src/cli.js CHANGED
@@ -3,11 +3,13 @@ import { writeFile } from "node:fs/promises";
3
3
  import { lintAgents, renderAgentsLintMarkdown } from "./agentsLint.js";
4
4
  import { analyzeTargets } from "./analyze.js";
5
5
  import { renderBenchmarkMarkdown, runBenchmark } from "./benchmark.js";
6
+ import { listDemoScenarios, renderDemoMarkdown, renderDemoScenarioList, runDemo } from "./demo.js";
6
7
  import { doctorRepo } from "./doctor.js";
7
8
  import { compareAnalyses, evaluate } from "./eval.js";
8
9
  import { analyzeGithubEventContext } from "./githubContext.js";
9
10
  import { postPullRequestComment } from "./github.js";
10
11
  import { initProject } from "./init.js";
12
+ import { renderOssBriefMarkdown, runOssBrief } from "./ossBrief.js";
11
13
  import { redactTargets } from "./redact.js";
12
14
  import { renderAgentsRules, renderCodexIssueReport, renderComparison, renderDoctorMarkdown, renderDoctorPrComment, renderMarkdown, renderPrComment, renderSarif, renderSkill } from "./report.js";
13
15
  import { renderScorecardMarkdown, renderScorecardPrComment, runScorecard } from "./scorecard.js";
@@ -24,6 +26,19 @@ async function main() {
24
26
  await writeOutput(output, parsed.flags.output);
25
27
  return;
26
28
  }
29
+ if (parsed.command === "demo") {
30
+ const format = String(parsed.flags.format ?? "markdown");
31
+ if (parsed.flags.list) {
32
+ const scenarios = listDemoScenarios();
33
+ const output = format === "json" ? `${JSON.stringify({ scenarios }, null, 2)}\n` : renderDemoScenarioList(scenarios);
34
+ await writeOutput(output, parsed.flags.output);
35
+ return;
36
+ }
37
+ const result = await runDemo(parsed.targets[0]);
38
+ const output = format === "json" ? `${JSON.stringify(result, null, 2)}\n` : renderDemoMarkdown(result);
39
+ await writeOutput(output, parsed.flags.output);
40
+ return;
41
+ }
27
42
  if (parsed.command === "suggest") {
28
43
  const result = await analyzeTargets(parsed.targets);
29
44
  const target = String(parsed.flags.target ?? "agents-md");
@@ -103,6 +118,15 @@ async function main() {
103
118
  process.exitCode = result.passed ? 0 : 1;
104
119
  return;
105
120
  }
121
+ if (parsed.command === "oss-brief") {
122
+ const threshold = numberFlag(parsed.flags.threshold) ?? 85;
123
+ const result = await runOssBrief(parsed.targets[0] ?? process.cwd(), threshold);
124
+ const format = String(parsed.flags.format ?? "markdown");
125
+ const output = format === "json" ? `${JSON.stringify(result, null, 2)}\n` : renderOssBriefMarkdown(result);
126
+ await writeOutput(output, parsed.flags.output);
127
+ process.exitCode = result.scorecard.passed ? 0 : 1;
128
+ return;
129
+ }
106
130
  if (parsed.command === "guard-github-event") {
107
131
  const eventPath = parsed.targets[0] ?? stringFlag(parsed.flags.event) ?? process.env.GITHUB_EVENT_PATH;
108
132
  if (!eventPath) {
@@ -264,6 +288,7 @@ function printHelp() {
264
288
  Turn failed AI coding-agent runs into reusable rules, skills, and eval evidence.
265
289
 
266
290
  Usage:
291
+ trace-to-skill demo [scenario] [--list] [--format markdown|json] [--output docs/DEMO.md]
267
292
  trace-to-skill analyze <trace-file-or-dir> [--format markdown|json|sarif] [--output report.md]
268
293
  trace-to-skill codex-report <trace-file-or-dir> [--output openai-codex-issue.md]
269
294
  trace-to-skill suggest <trace-file-or-dir> [--target agents-md|skill] [--output AGENTS.generated.md]
@@ -273,6 +298,7 @@ Usage:
273
298
  trace-to-skill benchmark [--format markdown|json] [--output docs/BENCHMARK.md]
274
299
  trace-to-skill scorecard [repo-dir] [--threshold 85] [--format markdown|json] [--output docs/SCORECARD.md]
275
300
  trace-to-skill scorecard-comment [repo-dir] [--threshold 85] [--dry-run] [--token $GITHUB_TOKEN]
301
+ trace-to-skill oss-brief [repo-dir] [--threshold 85] [--format markdown|json] [--output docs/OPENAI_OSS_BRIEF.md]
276
302
  trace-to-skill guard-github-event [event.json] [--threshold 80] [--format markdown|json] [--output report.md]
277
303
  trace-to-skill comment <trace-file-or-dir> [--dry-run] [--token $GITHUB_TOKEN]
278
304
  trace-to-skill compare --before <old-run> --after <new-run> [--format markdown|json]
@@ -281,6 +307,8 @@ Usage:
281
307
  trace-to-skill init [--traces runs] [--threshold 80] [--doctor-threshold 85] [--comment] [--sarif] [--dry-run]
282
308
 
283
309
  Examples:
310
+ trace-to-skill demo
311
+ trace-to-skill demo latency-regression
284
312
  trace-to-skill analyze ./runs
285
313
  trace-to-skill codex-report ./runs --output openai-codex-issue.md
286
314
  trace-to-skill suggest ./runs --target skill --output skills/verification-before-completion/SKILL.md
@@ -290,6 +318,7 @@ Examples:
290
318
  trace-to-skill benchmark
291
319
  trace-to-skill scorecard .
292
320
  trace-to-skill scorecard-comment . --threshold 85
321
+ trace-to-skill oss-brief . --output docs/OPENAI_OSS_BRIEF.md
293
322
  trace-to-skill guard-github-event "$GITHUB_EVENT_PATH"
294
323
  trace-to-skill comment ./runs
295
324
  trace-to-skill compare --before ./runs/before --after ./runs/after
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { AnalysisResult } from "./types.js";
2
+ export interface DemoScenario {
3
+ id: string;
4
+ title: string;
5
+ fixture: string;
6
+ description: string;
7
+ }
8
+ export interface DemoResult {
9
+ generatedAt: string;
10
+ scenario: DemoScenario;
11
+ analysis: AnalysisResult;
12
+ }
13
+ export declare function listDemoScenarios(): DemoScenario[];
14
+ export declare function runDemo(scenarioId?: string): Promise<DemoResult>;
15
+ export declare function renderDemoMarkdown(result: DemoResult): string;
16
+ export declare function renderDemoScenarioList(scenarios?: DemoScenario[]): string;
@@ -0,0 +1,91 @@
1
+ import path from "node:path";
2
+ import { fileURLToPath } from "node:url";
3
+ import { analyzeTargets } from "./analyze.js";
4
+ import { renderCodexIssueReport } from "./report.js";
5
+ const DEMO_SCENARIOS = [
6
+ {
7
+ id: "approval-friction",
8
+ title: "Codex approval friction",
9
+ fixture: "fixtures/codex-approval-friction.md",
10
+ description: "Repeated approval prompts, Approve for this session misses, and noisy trusted MCP tool approvals."
11
+ },
12
+ {
13
+ id: "latency-regression",
14
+ title: "Codex latency regression",
15
+ fixture: "fixtures/codex-latency-regression.md",
16
+ description: "Fast mode feels like Standard, with long thinking, search, read, or compaction stalls."
17
+ },
18
+ {
19
+ id: "token-burn",
20
+ title: "Codex token burn",
21
+ fixture: "fixtures/codex-token-burn.md",
22
+ description: "Usage drains from background polling, idle activity, compaction loops, retries, or cached-heavy turns."
23
+ },
24
+ {
25
+ id: "sensitive-files",
26
+ title: "Sensitive file access",
27
+ fixture: "fixtures/sensitive-file-access.md",
28
+ description: "Secrets, local credentials, production env files, or private databases enter agent context."
29
+ },
30
+ {
31
+ id: "github-prompt-injection",
32
+ title: "GitHub prompt injection",
33
+ fixture: "fixtures/prompt-injection.md",
34
+ description: "Untrusted issue, PR, comment, or web text tells the agent to ignore policy or leak secrets."
35
+ }
36
+ ];
37
+ export function listDemoScenarios() {
38
+ return [...DEMO_SCENARIOS];
39
+ }
40
+ export async function runDemo(scenarioId = "approval-friction") {
41
+ const scenario = DEMO_SCENARIOS.find((item) => item.id === scenarioId);
42
+ if (!scenario) {
43
+ const ids = DEMO_SCENARIOS.map((item) => item.id).join(", ");
44
+ throw new Error(`unknown demo scenario "${scenarioId}". Available scenarios: ${ids}`);
45
+ }
46
+ const analysis = await analyzeTargets([path.join(packageRoot(), scenario.fixture)]);
47
+ return {
48
+ generatedAt: new Date().toISOString(),
49
+ scenario,
50
+ analysis
51
+ };
52
+ }
53
+ export function renderDemoMarkdown(result) {
54
+ return [
55
+ "# trace-to-skill Demo",
56
+ "",
57
+ `Scenario: **${result.scenario.title}**`,
58
+ "",
59
+ result.scenario.description,
60
+ "",
61
+ `Fixture: \`${result.scenario.fixture}\``,
62
+ "",
63
+ "This is a packaged public fixture, so you can try the project without collecting a private trace first.",
64
+ "",
65
+ "## Generated Codex Issue Report",
66
+ "",
67
+ renderCodexIssueReport(result.analysis).replace(/^# OpenAI Codex Issue Report\n\n/, "")
68
+ ].join("\n");
69
+ }
70
+ export function renderDemoScenarioList(scenarios = listDemoScenarios()) {
71
+ return [
72
+ "# trace-to-skill Demo Scenarios",
73
+ "",
74
+ "| Scenario | What it shows |",
75
+ "| --- | --- |",
76
+ ...scenarios.map((scenario) => `| \`${scenario.id}\` | ${scenario.description} |`),
77
+ "",
78
+ "Run one locally:",
79
+ "",
80
+ "```bash",
81
+ "trace-to-skill demo",
82
+ "trace-to-skill demo latency-regression",
83
+ "trace-to-skill demo --list",
84
+ "```",
85
+ ""
86
+ ].join("\n");
87
+ }
88
+ function packageRoot() {
89
+ return path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../..");
90
+ }
91
+ //# sourceMappingURL=demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo.js","sourceRoot":"","sources":["../../src/demo.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  export { lintAgents, renderAgentsLintMarkdown } from "./agentsLint.js";
2
2
  export { analyzeInputs, analyzeTargets } from "./analyze.js";
3
3
  export { renderBenchmarkMarkdown, runBenchmark } from "./benchmark.js";
4
+ export { listDemoScenarios, renderDemoMarkdown, renderDemoScenarioList, runDemo } from "./demo.js";
4
5
  export { doctorRepo } from "./doctor.js";
5
6
  export { compareAnalyses, evaluate } from "./eval.js";
6
7
  export { analyzeGithubEventContext, extractGithubContextInputs } from "./githubContext.js";
7
8
  export { postPullRequestComment } from "./github.js";
8
9
  export { initProject } from "./init.js";
10
+ export { renderOssBriefMarkdown, runOssBrief } from "./ossBrief.js";
9
11
  export { redactTargets, redactText } from "./redact.js";
10
12
  export { renderAgentsRules, renderCodexIssueReport, renderComparison, renderDoctorMarkdown, renderDoctorPrComment, renderMarkdown, renderPrComment, renderSarif, renderSkill } from "./report.js";
11
13
  export { renderScorecardMarkdown, renderScorecardPrComment, runScorecard } from "./scorecard.js";
package/dist/src/index.js CHANGED
@@ -1,11 +1,13 @@
1
1
  export { lintAgents, renderAgentsLintMarkdown } from "./agentsLint.js";
2
2
  export { analyzeInputs, analyzeTargets } from "./analyze.js";
3
3
  export { renderBenchmarkMarkdown, runBenchmark } from "./benchmark.js";
4
+ export { listDemoScenarios, renderDemoMarkdown, renderDemoScenarioList, runDemo } from "./demo.js";
4
5
  export { doctorRepo } from "./doctor.js";
5
6
  export { compareAnalyses, evaluate } from "./eval.js";
6
7
  export { analyzeGithubEventContext, extractGithubContextInputs } from "./githubContext.js";
7
8
  export { postPullRequestComment } from "./github.js";
8
9
  export { initProject } from "./init.js";
10
+ export { renderOssBriefMarkdown, runOssBrief } from "./ossBrief.js";
9
11
  export { redactTargets, redactText } from "./redact.js";
10
12
  export { renderAgentsRules, renderCodexIssueReport, renderComparison, renderDoctorMarkdown, renderDoctorPrComment, renderMarkdown, renderPrComment, renderSarif, renderSkill } from "./report.js";
11
13
  export { renderScorecardMarkdown, renderScorecardPrComment, runScorecard } from "./scorecard.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClM,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClM,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,27 @@
1
+ export interface OssBriefResult {
2
+ generatedAt: string;
3
+ root: string;
4
+ repository?: string;
5
+ packageName?: string;
6
+ packageVersion?: string;
7
+ license?: string;
8
+ scorecard: {
9
+ passed: boolean;
10
+ doctorScore: number;
11
+ doctorStatus: "ready" | "needs-attention";
12
+ benchmarkStatus: "pass" | "fail";
13
+ benchmarkCases: number;
14
+ };
15
+ qualification: {
16
+ long: string;
17
+ max500: string;
18
+ };
19
+ apiCredits: {
20
+ long: string;
21
+ max500: string;
22
+ };
23
+ evidence: string[];
24
+ nextSteps: string[];
25
+ }
26
+ export declare function runOssBrief(target?: string, threshold?: number): Promise<OssBriefResult>;
27
+ export declare function renderOssBriefMarkdown(result: OssBriefResult): string;
@@ -0,0 +1,152 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { runScorecard } from "./scorecard.js";
4
+ export async function runOssBrief(target = process.cwd(), threshold = 85) {
5
+ const root = path.resolve(target);
6
+ const scorecard = await runScorecard(root, threshold);
7
+ const packageJson = await readPackageJson(root);
8
+ const repository = normalizeRepositoryUrl(packageJson?.repository);
9
+ const packageName = packageJson?.name;
10
+ const packageVersion = packageJson?.version;
11
+ const license = packageJson?.license ?? detectLicenseFromDoctor(scorecard);
12
+ const projectName = packageName ?? path.basename(root);
13
+ const commandName = packageName ? `npx ${packageName}` : "trace-to-skill";
14
+ const qualificationLong = [
15
+ `${projectName} helps open-source maintainers adopt Codex safely by turning failed coding-agent runs into evidence-backed rules, reusable workflows, and CI gates.`,
16
+ `It supports real maintenance work: PR review, issue triage, release quality, MCP risk, prompt-injection defense, privacy-preserving trace sharing, and repeat failure reduction.`,
17
+ `The repository is ${scorecard.doctor.status}, scores ${scorecard.doctor.score}/100 on the local Codex readiness doctor, and ships a deterministic benchmark with ${scorecard.benchmark.cases} public fixture cases.`
18
+ ].join(" ");
19
+ const apiCreditsLong = [
20
+ "API credits would power optional maintainer workflows on top of the local deterministic scanner:",
21
+ "classifying failed Codex sessions, generating candidate AGENTS.md rules or SKILL.md workflows, comparing before/after runs, and producing PR-ready triage reports.",
22
+ "The local CLI remains free, dependency-light, and usable without API credits."
23
+ ].join(" ");
24
+ return {
25
+ generatedAt: new Date().toISOString(),
26
+ root,
27
+ repository,
28
+ packageName,
29
+ packageVersion,
30
+ license,
31
+ scorecard: {
32
+ passed: scorecard.passed,
33
+ doctorScore: scorecard.doctor.score,
34
+ doctorStatus: scorecard.doctor.status,
35
+ benchmarkStatus: scorecard.benchmark.status,
36
+ benchmarkCases: scorecard.benchmark.cases
37
+ },
38
+ qualification: {
39
+ long: qualificationLong,
40
+ max500: fit500(qualificationLong)
41
+ },
42
+ apiCredits: {
43
+ long: apiCreditsLong,
44
+ max500: fit500(apiCreditsLong)
45
+ },
46
+ evidence: buildEvidence(scorecard, commandName, repository, packageName, packageVersion, license),
47
+ nextSteps: buildNextSteps(scorecard)
48
+ };
49
+ }
50
+ export function renderOssBriefMarkdown(result) {
51
+ const lines = [
52
+ "# OpenAI OSS Brief",
53
+ "",
54
+ "| Field | Value |",
55
+ "| --- | --- |",
56
+ `| Repository | ${result.repository ?? "Add public repository URL"} |`,
57
+ `| Package | ${result.packageName ? `${result.packageName}${result.packageVersion ? `@${result.packageVersion}` : ""}` : "Not detected"} |`,
58
+ `| License | ${result.license ?? "Not detected"} |`,
59
+ `| Codex readiness | ${result.scorecard.doctorStatus} (${result.scorecard.doctorScore}/100) |`,
60
+ `| Benchmark | ${result.scorecard.benchmarkStatus}, ${result.scorecard.benchmarkCases} cases |`,
61
+ "",
62
+ "## Why This Repository Qualifies",
63
+ "",
64
+ result.qualification.long,
65
+ "",
66
+ "### 500-Character Version",
67
+ "",
68
+ blockquote(result.qualification.max500),
69
+ "",
70
+ "## How API Credits Would Be Used",
71
+ "",
72
+ result.apiCredits.long,
73
+ "",
74
+ "### 500-Character Version",
75
+ "",
76
+ blockquote(result.apiCredits.max500),
77
+ "",
78
+ "## Evidence",
79
+ "",
80
+ ...result.evidence.map((item) => `- ${item}`),
81
+ "",
82
+ "## Next Steps Before Submitting",
83
+ "",
84
+ ...result.nextSteps.map((item) => `- ${item}`),
85
+ "",
86
+ "Run it locally:",
87
+ "",
88
+ "```bash",
89
+ "trace-to-skill oss-brief .",
90
+ "trace-to-skill oss-brief . --format json",
91
+ "```",
92
+ ""
93
+ ];
94
+ return lines.join("\n");
95
+ }
96
+ async function readPackageJson(root) {
97
+ try {
98
+ const raw = await readFile(path.join(root, "package.json"), "utf8");
99
+ return JSON.parse(raw);
100
+ }
101
+ catch {
102
+ return undefined;
103
+ }
104
+ }
105
+ function normalizeRepositoryUrl(repository) {
106
+ const raw = typeof repository === "string" ? repository : repository?.url;
107
+ if (!raw) {
108
+ return undefined;
109
+ }
110
+ return raw
111
+ .replace(/^git\+/, "")
112
+ .replace(/\.git$/, "");
113
+ }
114
+ function detectLicenseFromDoctor(scorecard) {
115
+ const license = scorecard.reports.doctor.checks.find((check) => check.id === "license");
116
+ const match = license?.detail.match(/appears to be ([^.]+)\./);
117
+ return match?.[1];
118
+ }
119
+ function buildEvidence(scorecard, commandName, repository, packageName, packageVersion, license) {
120
+ return [
121
+ repository ? `Public repository: ${repository}` : "Add the public repository URL before submitting.",
122
+ packageName ? `One-command package: ${commandName}${packageVersion ? `@${packageVersion}` : ""}` : "Add a package or action distribution surface for easy adoption.",
123
+ license ? `Open-source license: ${license}` : "Add an OSI-approved license such as Apache-2.0 or MIT.",
124
+ `Codex readiness doctor: ${scorecard.doctor.status}, ${scorecard.doctor.score}/100, ${scorecard.doctor.failedChecks} failed checks.`,
125
+ `Public fixture benchmark: ${scorecard.benchmark.status}, ${scorecard.benchmark.cases} cases.`,
126
+ "Maintainer control: generated rules are suggestions, evidence is line-linked, and secrets can be redacted before sharing."
127
+ ];
128
+ }
129
+ function buildNextSteps(scorecard) {
130
+ const steps = [
131
+ "Add current GitHub stars, npm monthly downloads, downstream users, or adoption examples before submitting the application.",
132
+ "Link the latest release, CI run, readiness report, and benchmark report as public proof.",
133
+ "Describe your maintainer role and the recurring PR review, issue triage, release, or security workload this project reduces."
134
+ ];
135
+ if (!scorecard.passed) {
136
+ steps.unshift("Fix failing readiness or benchmark checks before using this brief as application evidence.");
137
+ }
138
+ return steps;
139
+ }
140
+ function fit500(value) {
141
+ if (value.length <= 500) {
142
+ return value;
143
+ }
144
+ const sliced = value.slice(0, 500);
145
+ const sentenceEnd = Math.max(sliced.lastIndexOf(". "), sliced.lastIndexOf("; "), sliced.lastIndexOf(", "));
146
+ const candidate = sentenceEnd >= 300 ? sliced.slice(0, sentenceEnd + 1) : sliced.slice(0, 497);
147
+ return candidate.trimEnd().replace(/[.,;:]$/, "") + "...";
148
+ }
149
+ function blockquote(value) {
150
+ return value.split("\n").map((line) => `> ${line}`).join("\n");
151
+ }
152
+ //# sourceMappingURL=ossBrief.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ossBrief.js","sourceRoot":"","sources":["../../src/ossBrief.ts"],"names":[],"mappings":"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"}
package/docs/DEMO.md ADDED
@@ -0,0 +1,92 @@
1
+ # trace-to-skill Demo
2
+
3
+ Scenario: **Codex approval friction**
4
+
5
+ Repeated approval prompts, Approve for this session misses, and noisy trusted MCP tool approvals.
6
+
7
+ Fixture: `fixtures/codex-approval-friction.md`
8
+
9
+ This is a packaged public fixture, so you can try the project without collecting a private trace first.
10
+
11
+ ## Generated Codex Issue Report
12
+
13
+ # OpenAI Codex Issue Triage Report
14
+
15
+ Score: **59/100**
16
+
17
+ Likely failure class: **Codex approval persistence or MCP approval friction (codex_approval_friction, high)**
18
+
19
+ Agent workflow needs clearer verification, instruction, or security hardening before broad reuse.
20
+
21
+ ## Copy-Paste Issue Body
22
+
23
+ ```md
24
+ ### What happened?
25
+
26
+ trace-to-skill detected Codex approval persistence or MCP approval friction (codex_approval_friction). Repeated approval prompts can make Codex unusable, push users toward unsafe full-access modes, or hide whether the regression is command approval caching, file-change approval, raw MCP trust, or per-tool configuration scale.
27
+
28
+ ### Detected failure class
29
+
30
+ - codex_approval_friction: Codex approval persistence or MCP approval friction (high)
31
+
32
+ ### Evidence
33
+
34
+ #### Codex approval persistence or MCP approval friction
35
+ - fixtures/codex-approval-friction.md:14 - - Users report clicking approve this session again and again, then switching to Full Access because the safer scoped mode is too annoying.
36
+ - fixtures/codex-approval-friction.md:15 - - Some reports include `item/fileChange/requestApproval` and `apply_patch_approval_request`, which may be file-change approval rather than command approval.
37
+ - fixtures/codex-approval-friction.md:24 - - Browser tools such as `browser_click`, `browser_type`, and `browser_navigate` ask for confirmation dozens of times.
38
+ - fixtures/codex-approval-friction.md:25 - - Users want a per-MCP default such as `default_tools_approval_mode = "approve"` instead of hundreds of `mcp_servers.playwright.tools.browser_click.approval_mode = "approve"` entries.
39
+ - fixtures/codex-approval-friction.md:33 - - displayed command, executed command, and normalized command identity
40
+
41
+ #### Codex sandbox or permission failure
42
+ - fixtures/codex-approval-friction.md:23 - - `approval_policy = "never"` does not stop approval prompts for Playwright MCP tool calls.
43
+
44
+ ### Diagnostics to attach
45
+
46
+ - When reporting Codex approval friction, capture client/app/extension version, OS and remote/WSL/SSH state, sandbox and approval_policy, exact approval scope selected, displayed command versus executed command, whether the repeat is command, file-change, patch, or MCP tool approval, MCP server name and tool names, visible tool args, persisted config snippets such as default_tools_approval_mode or per-tool approval_mode, repeated prompt count, timestamps, whether Full Access/WSL/downgrade changes behavior, and the smallest safe reproduction.
47
+ - When Codex sandbox or permission setup fails, capture the OS, Codex version, sandbox_mode, approval_policy, exact stderr, workspace ownership/ACL evidence, and whether a clean directory can run a simple command plus apply_patch.
48
+
49
+ ### Privacy
50
+
51
+ - I redacted tokens, API keys, private paths, customer data, and hidden Unicode controls before sharing this trace.
52
+ ```
53
+
54
+ ## Findings
55
+
56
+ ### 1. Codex approval persistence or MCP approval friction
57
+
58
+ Severity: **high**
59
+
60
+ Repeated approval prompts can make Codex unusable, push users toward unsafe full-access modes, or hide whether the regression is command approval caching, file-change approval, raw MCP trust, or per-tool configuration scale.
61
+
62
+ Evidence:
63
+ - `fixtures/codex-approval-friction.md:14` - Users report clicking approve this session again and again, then switching to Full Access because the safer scoped mode is too annoying.
64
+ - `fixtures/codex-approval-friction.md:15` - Some reports include `item/fileChange/requestApproval` and `apply_patch_approval_request`, which may be file-change approval rather than command approval.
65
+ - `fixtures/codex-approval-friction.md:24` - Browser tools such as `browser_click`, `browser_type`, and `browser_navigate` ask for confirmation dozens of times.
66
+ - `fixtures/codex-approval-friction.md:25` - Users want a per-MCP default such as `default_tools_approval_mode = "approve"` instead of hundreds of `mcp_servers.playwright.tools.browser_click.approval_mode = "approve"` entries.
67
+ - `fixtures/codex-approval-friction.md:33` - displayed command, executed command, and normalized command identity
68
+
69
+ Suggested rule:
70
+
71
+ > When reporting Codex approval friction, capture client/app/extension version, OS and remote/WSL/SSH state, sandbox and approval_policy, exact approval scope selected, displayed command versus executed command, whether the repeat is command, file-change, patch, or MCP tool approval, MCP server name and tool names, visible tool args, persisted config snippets such as default_tools_approval_mode or per-tool approval_mode, repeated prompt count, timestamps, whether Full Access/WSL/downgrade changes behavior, and the smallest safe reproduction.
72
+
73
+ ### 2. Codex sandbox or permission failure
74
+
75
+ Severity: **high**
76
+
77
+ Sandbox setup, approval-mode, and workspace permission failures can block every tool call or leave the worktree in a broken ownership state.
78
+
79
+ Evidence:
80
+ - `fixtures/codex-approval-friction.md:23` - `approval_policy = "never"` does not stop approval prompts for Playwright MCP tool calls.
81
+
82
+ Suggested rule:
83
+
84
+ > When Codex sandbox or permission setup fails, capture the OS, Codex version, sandbox_mode, approval_policy, exact stderr, workspace ownership/ACL evidence, and whether a clean directory can run a simple command plus apply_patch.
85
+
86
+
87
+ ## Reporter Notes
88
+
89
+ - Run `trace-to-skill redact <trace> --output redacted-runs` before attaching logs publicly.
90
+ - Prefer the shortest trace that reproduces the failure.
91
+ - Include exact Codex app/CLI version, OS, model, subscription/workspace, and the command or UI action that failed.
92
+ - Link related OpenAI/Codex issues when you know them, but keep the evidence self-contained.
package/docs/DISCOVERY.md CHANGED
@@ -15,6 +15,7 @@ This page is written for maintainers, search engines, package indexes, and AI re
15
15
  - Codex issue map: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/CODEX_ISSUE_MAP.md
16
16
  - Scorecard: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/SCORECARD.md
17
17
  - OpenAI OSS strategy: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/OPENAI_OSS_STRATEGY.md
18
+ - Zero-setup demo: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/DEMO.md
18
19
 
19
20
  ## Problems It Solves
20
21
 
@@ -51,6 +52,7 @@ This page is written for maintainers, search engines, package indexes, and AI re
51
52
 
52
53
  ```bash
53
54
  npx trace-to-skill doctor .
55
+ npx trace-to-skill demo
54
56
  npx trace-to-skill scorecard .
55
57
  npx trace-to-skill lint-agents .
56
58
  npx trace-to-skill guard-github-event "$GITHUB_EVENT_PATH"
@@ -65,10 +67,13 @@ npx trace-to-skill suggest ./runs --target agents-md
65
67
  - `trace-to-skill analyze --format json`
66
68
  - `trace-to-skill lint-agents --format json`
67
69
  - `trace-to-skill doctor --format json`
70
+ - `trace-to-skill demo --format json`
68
71
  - `trace-to-skill redact --format json`
69
72
  - `trace-to-skill scorecard --format json`
70
73
  - SARIF from `trace-to-skill analyze --format sarif`
71
74
  - OpenAI/Codex issue-ready Markdown from `trace-to-skill codex-report`
75
+ - Packaged zero-setup Codex issue-report demo from `trace-to-skill demo`
76
+ - OpenAI OSS support/application brief from `trace-to-skill oss-brief`
72
77
  - Codex issue-cluster mapping in `docs/CODEX_ISSUE_MAP.md`
73
78
  - GitHub Action outputs for doctor, AGENTS lint, GitHub context guard, benchmark, and scorecard modes
74
79
 
@@ -79,6 +84,7 @@ npx trace-to-skill suggest ./runs --target agents-md
79
84
  - `schemas/doctor-result.schema.json`
80
85
  - `schemas/redact-result.schema.json`
81
86
  - `schemas/scorecard-result.schema.json`
87
+ - `schemas/oss-brief-result.schema.json`
82
88
 
83
89
  ## Related Keywords
84
90
 
@@ -0,0 +1,47 @@
1
+ # OpenAI OSS Brief
2
+
3
+ | Field | Value |
4
+ | --- | --- |
5
+ | Repository | https://github.com/grnbtqdbyx-create/trace-to-skill |
6
+ | Package | trace-to-skill@0.1.48 |
7
+ | License | Apache-2.0 |
8
+ | Codex readiness | ready (100/100) |
9
+ | Benchmark | pass, 21 cases |
10
+
11
+ ## Why This Repository Qualifies
12
+
13
+ trace-to-skill helps open-source maintainers adopt Codex safely by turning failed coding-agent runs into evidence-backed rules, reusable workflows, and CI gates. It supports real maintenance work: PR review, issue triage, release quality, MCP risk, prompt-injection defense, privacy-preserving trace sharing, and repeat failure reduction. The repository is ready, scores 100/100 on the local Codex readiness doctor, and ships a deterministic benchmark with 21 public fixture cases.
14
+
15
+ ### 500-Character Version
16
+
17
+ > trace-to-skill helps open-source maintainers adopt Codex safely by turning failed coding-agent runs into evidence-backed rules, reusable workflows, and CI gates. It supports real maintenance work: PR review, issue triage, release quality, MCP risk, prompt-injection defense, privacy-preserving trace sharing, and repeat failure reduction. The repository is ready, scores 100/100 on the local Codex readiness doctor, and ships a deterministic benchmark with 21 public fixture cases.
18
+
19
+ ## How API Credits Would Be Used
20
+
21
+ API credits would power optional maintainer workflows on top of the local deterministic scanner: classifying failed Codex sessions, generating candidate AGENTS.md rules or SKILL.md workflows, comparing before/after runs, and producing PR-ready triage reports. The local CLI remains free, dependency-light, and usable without API credits.
22
+
23
+ ### 500-Character Version
24
+
25
+ > API credits would power optional maintainer workflows on top of the local deterministic scanner: classifying failed Codex sessions, generating candidate AGENTS.md rules or SKILL.md workflows, comparing before/after runs, and producing PR-ready triage reports. The local CLI remains free, dependency-light, and usable without API credits.
26
+
27
+ ## Evidence
28
+
29
+ - Public repository: https://github.com/grnbtqdbyx-create/trace-to-skill
30
+ - One-command package: npx trace-to-skill@0.1.48
31
+ - Open-source license: Apache-2.0
32
+ - Codex readiness doctor: ready, 100/100, 0 failed checks.
33
+ - Public fixture benchmark: pass, 21 cases.
34
+ - Maintainer control: generated rules are suggestions, evidence is line-linked, and secrets can be redacted before sharing.
35
+
36
+ ## Next Steps Before Submitting
37
+
38
+ - Add current GitHub stars, npm monthly downloads, downstream users, or adoption examples before submitting the application.
39
+ - Link the latest release, CI run, readiness report, and benchmark report as public proof.
40
+ - Describe your maintainer role and the recurring PR review, issue triage, release, or security workload this project reduces.
41
+
42
+ Run it locally:
43
+
44
+ ```bash
45
+ trace-to-skill oss-brief .
46
+ trace-to-skill oss-brief . --format json
47
+ ```
package/docs/RELEASE.md CHANGED
@@ -41,7 +41,7 @@ npx npm@11.16.0 trust github trace-to-skill \
41
41
  2. Run `npm run check`.
42
42
  3. Regenerate `docs/BENCHMARK.md` and `docs/SCORECARD.md` if benchmark fixtures changed.
43
43
  4. Commit and push to `main`.
44
- 5. Create a GitHub release whose tag matches the package version, such as `v0.1.46`.
44
+ 5. Create a GitHub release whose tag matches the package version, such as `v0.1.48`.
45
45
  6. Confirm the `Publish npm` workflow succeeds.
46
46
  7. Confirm `npm view trace-to-skill version dist-tags.latest --json` shows the new version.
47
47
 
package/docs/USE_CASES.md CHANGED
@@ -2,7 +2,25 @@
2
2
 
3
3
  `trace-to-skill` is for maintainers who want coding agents to produce reviewable evidence instead of repeating the same mistakes.
4
4
 
5
- ## 1. Codex Readiness Gate
5
+ ## 1. Zero-Setup Demo
6
+
7
+ Use this before collecting or redacting private traces.
8
+
9
+ ```bash
10
+ npx trace-to-skill demo
11
+ npx trace-to-skill demo --list
12
+ npx trace-to-skill demo latency-regression
13
+ ```
14
+
15
+ What it proves:
16
+
17
+ - packaged fixtures can produce a real Codex issue report immediately
18
+ - maintainers can inspect the output shape before sharing any private log
19
+ - demos cover approval friction, latency, token burn, sensitive files, and prompt injection
20
+
21
+ See the generated demo output in [docs/DEMO.md](DEMO.md).
22
+
23
+ ## 2. Codex Readiness Gate
6
24
 
7
25
  Use this when a repository wants Codex-assisted pull requests, but maintainers need proof that the repo has basic guardrails.
8
26
 
@@ -21,7 +39,7 @@ What it proves:
21
39
  Recommended CI surface:
22
40
 
23
41
  ```yaml
24
- - uses: grnbtqdbyx-create/trace-to-skill@v0.1.46
42
+ - uses: grnbtqdbyx-create/trace-to-skill@v0.1.48
25
43
  with:
26
44
  mode: all
27
45
  doctor-threshold: "85"
@@ -31,7 +49,7 @@ Recommended CI surface:
31
49
  github-token: ${{ github.token }}
32
50
  ```
33
51
 
34
- ## 2. AGENTS.md And MCP Hygiene
52
+ ## 3. AGENTS.md And MCP Hygiene
35
53
 
36
54
  Use this before giving Codex broad repository access.
37
55
 
@@ -51,7 +69,7 @@ This checks:
51
69
 
52
70
  The goal is not to ban powerful tools. The goal is to make trust boundaries visible before an agent acts.
53
71
 
54
- ## 3. Sandbox And Permission Failure Triage
72
+ ## 4. Sandbox And Permission Failure Triage
55
73
 
56
74
  Use this when Codex cannot start tools, apply patches, or write to the workspace because sandbox setup or permissions fail.
57
75
 
@@ -61,7 +79,7 @@ npx trace-to-skill analyze ./runs --format json
61
79
 
62
80
  This catches signals such as Windows sandbox setup refresh failures, `os error 740`, `CodexSandboxOffline` ownership drift, ACL denial, approval-policy mismatch, and Full Access sessions behaving like workspace-write or on-request mode.
63
81
 
64
- ## 4. Codex Auth And Connectivity Triage
82
+ ## 5. Codex Auth And Connectivity Triage
65
83
 
66
84
  Use this when Codex cannot log in, exchange an auth token, stream a response, or connect through a container, proxy, VPN, corporate CA, IPv6 network, or Cloudflare challenge.
67
85
 
@@ -71,7 +89,7 @@ npx trace-to-skill analyze ./runs --format json
71
89
 
72
90
  This catches signals such as `token_exchange_failed`, `auth.openai.com/oauth/token`, `codex_login::server`, `cf-mitigated: challenge`, missing `ca-certificates`, `update-ca-certificates`, `CODEX_CA_CERTIFICATE`, IPv6 fallback evidence, proxy/MITM TLS failures, and `stream disconnected before completion` on `chatgpt.com/backend-api/codex/responses`.
73
91
 
74
- ## 5. Codex Mobile And Remote-Control Route Health
92
+ ## 6. Codex Mobile And Remote-Control Route Health
75
93
 
76
94
  Use this when Codex mobile, SSH remote, or desktop remote-control says it is connected but commands do not reach the expected host, workspace, or app-server.
77
95
 
@@ -81,7 +99,7 @@ npx trace-to-skill analyze ./runs --format json
81
99
 
82
100
  This catches signals such as `Waiting for desktop`, `Directory: Unavailable`, stale `server_name` enrollment, stale remote-control listener, `127.0.0.1:14567`, missing cached helper files such as `codex-windows-sandbox-setup.exe` or `codex-command-runner.exe`, empty backend environments, stale Android session lists, and temporary recovery after re-pairing or listener restart.
83
101
 
84
- ## 6. Codex MCP Runtime Triage
102
+ ## 7. Codex MCP Runtime Triage
85
103
 
86
104
  Use this when MCP tools are configured and visible, but Codex cannot actually call them at runtime.
87
105
 
@@ -91,7 +109,7 @@ npx trace-to-skill analyze ./runs --format json
91
109
 
92
110
  This catches signals such as `user cancelled MCP tool call`, `request_user_input is not supported in exec mode`, `Approve app tool call?`, `tool_call_mcp_elicitation`, routed callable names like `mcp__node_repl__js` becoming `unsupported call`, deferred discovery dropping namespace or `serverName`, `tools/list` succeeding while Codex routing fails, and stdio transport lifecycle failures such as `Transport closed`, `stdin_end`, `stdin_close`, `transport_close`, or stderr backpressure.
93
111
 
94
- ## 7. Codex Resume And Session State Triage
112
+ ## 8. Codex Resume And Session State Triage
95
113
 
96
114
  Use this when long Codex sessions become difficult to resume, Desktop history rendering gets sluggish, or local state migrations break goals/projects/history.
97
115
 
@@ -101,7 +119,7 @@ npx trace-to-skill analyze ./runs --format json
101
119
 
102
120
  This catches signals such as `codex resume` picker hangs, `codex resume <id>` working while the picker freezes, large `rollout-*.jsonl` histories, high JSONL line and `response_item` / `event_msg` / `function_call` counts, large `input_image` payloads, slow `thread/resume` and `thread/goal/get` timings, `Could not load archived chats`, resume compression dropping the last 3-5 turns, `state_5.sqlite` / `goals_1.sqlite` migration mismatches, `no such table: thread_goals`, stale `projectless-thread-ids`, and `thread-workspace-root-hints` reverting after restart.
103
121
 
104
- ## 8. Codex Token Burn Attribution
122
+ ## 9. Codex Token Burn Attribution
105
123
 
106
124
  Use this when Codex usage drains faster than expected and the trace needs to separate useful model work from orchestration overhead.
107
125
 
@@ -112,7 +130,7 @@ npx trace-to-skill codex-report ./runs --output openai-codex-issue.md
112
130
 
113
131
  This catches signals such as tokens `burning very fast`, usage dropping by visible percentages after one or two prompts, weekly allowance depletion, 5-hour usage reaching 0%, large `input` plus `cached input` totals, `write_stdin` empty polling, background commands repeatedly reporting no new output, idle app usage, compaction tax, retry/tool loops, and missing attribution between normal turns, compaction, background polling, subagents, and retries.
114
132
 
115
- ## 9. Quota And Usage-Limit Evidence
133
+ ## 10. Quota And Usage-Limit Evidence
116
134
 
117
135
  Use this when Codex blocks a prompt with a usage-limit message but another surface still shows remaining quota.
118
136
 
@@ -122,7 +140,7 @@ npx trace-to-skill analyze ./runs --format json
122
140
 
123
141
  This catches traces where `/status` or the usage page shows remaining 5h or weekly quota, accounts appear to share limits unexpectedly, a Team account inherits a Plus account's limit state, or quota reset times jump after logout/login.
124
142
 
125
- ## 10. Codex Resource Leak Evidence
143
+ ## 11. Codex Resource Leak Evidence
126
144
 
127
145
  Use this when Codex Desktop, the VS Code extension, renderer, app-server, GPU process, shell snapshot, or helper process keeps burning local resources after the useful work should be idle.
128
146
 
@@ -135,7 +153,7 @@ This catches signals such as high `Code Helper (Renderer)` or `Code Helper (Plug
135
153
 
136
154
  Include process names/PIDs, CPU/GPU/RSS samples over time, log-loop snippets, workspace Git-root state, animation/reduce-motion state, and whether closing the panel/app, killing exact PIDs, `git init`, rollback, or restart clears the leak.
137
155
 
138
- ## 11. OpenAI Codex Issue Report
156
+ ## 12. OpenAI Codex Issue Report
139
157
 
140
158
  Use this when you want to file or update an OpenAI/Codex issue with a concise, evidence-backed report instead of pasting a full transcript.
141
159
 
@@ -148,7 +166,7 @@ The report includes the likely Codex failure class, line-linked evidence, diagno
148
166
 
149
167
  For a cluster-to-command map of current Codex issue patterns, see [CODEX_ISSUE_MAP.md](CODEX_ISSUE_MAP.md).
150
168
 
151
- ## 12. Sensitive File Access Evidence
169
+ ## 13. Sensitive File Access Evidence
152
170
 
153
171
  Use this when a trace suggests an agent read, attached, uploaded, diffed, or indexed credential-bearing files.
154
172
 
@@ -161,7 +179,7 @@ This catches signals such as `.env`, `.env.production`, `.npmrc`, `.pypirc`, `.n
161
179
 
162
180
  Before publishing evidence, run `trace-to-skill redact` and attach only redacted excerpts plus the file path/class.
163
181
 
164
- ## 13. GitHub Context Guard
182
+ ## 14. GitHub Context Guard
165
183
 
166
184
  Use this before an agent reads untrusted GitHub text.
167
185
 
@@ -178,7 +196,7 @@ Use it when:
178
196
  - a bot asks Codex to triage untrusted user reports
179
197
  - logs or comments might contain instructions like "ignore previous instructions" or "print secrets"
180
198
 
181
- ## 14. Failed Agent Run To Reviewable Rule
199
+ ## 15. Failed Agent Run To Reviewable Rule
182
200
 
183
201
  Use this when a coding agent made a repeated workflow mistake.
184
202
 
@@ -196,7 +214,7 @@ Recommended maintainer loop:
196
214
  4. Copy only evidence-backed rules into the real policy file.
197
215
  5. Run `eval` or `scorecard` in CI so the same failure does not silently return.
198
216
 
199
- ## 15. Privacy-Preserving Adoption
217
+ ## 16. Privacy-Preserving Adoption
200
218
 
201
219
  Use this when you want public evidence without leaking private traces.
202
220
 
package/llms.txt CHANGED
@@ -43,6 +43,7 @@ failed agent run -> failure class -> evidence-backed AGENTS.md/SKILL.md suggesti
43
43
  - Use cases: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/USE_CASES.md
44
44
  - Codex issue map: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/CODEX_ISSUE_MAP.md
45
45
  - Discovery summary: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/DISCOVERY.md
46
+ - Demo output: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/DEMO.md
46
47
  - Adoption guide: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/ADOPTION_GUIDE.md
47
48
  - Failure taxonomy: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/FAILURE_TAXONOMY.md
48
49
  - OpenAI OSS strategy: https://github.com/grnbtqdbyx-create/trace-to-skill/blob/main/docs/OPENAI_OSS_STRATEGY.md
@@ -55,6 +56,7 @@ failed agent run -> failure class -> evidence-backed AGENTS.md/SKILL.md suggesti
55
56
 
56
57
  ```bash
57
58
  npx trace-to-skill doctor .
59
+ npx trace-to-skill demo
58
60
  npx trace-to-skill lint-agents .
59
61
  npx trace-to-skill guard-github-event "$GITHUB_EVENT_PATH"
60
62
  npx trace-to-skill redact ./runs --output redacted-runs
@@ -91,6 +93,7 @@ npx trace-to-skill init --comment --sarif
91
93
  ## Search phrases this project should answer
92
94
 
93
95
  - Codex readiness checker for open-source repositories
96
+ - Codex issue report demo without private traces
94
97
  - AGENTS.md linter for Codex and Claude Code
95
98
  - turn failed agent runs into AGENTS.md rules
96
99
  - prompt injection guard for GitHub issue and PR comments
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trace-to-skill",
3
- "version": "0.1.46",
3
+ "version": "0.1.48",
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",
@@ -22,8 +22,10 @@
22
22
  "docs/AGENTS_LINT.md",
23
23
  "docs/BENCHMARK.md",
24
24
  "docs/CODEX_ISSUE_MAP.md",
25
+ "docs/DEMO.md",
25
26
  "docs/DISCOVERY.md",
26
27
  "docs/FAILURE_TAXONOMY.md",
28
+ "docs/OPENAI_OSS_BRIEF.md",
27
29
  "docs/RELEASE.md",
28
30
  "docs/SCORECARD.md",
29
31
  "docs/USE_CASES.md",
@@ -39,7 +41,7 @@
39
41
  "build": "tsc -p tsconfig.json",
40
42
  "clean": "rm -rf dist coverage",
41
43
  "test": "npm run build && node --test dist/tests/*.test.js",
42
- "check": "npm run test && node dist/src/cli.js doctor . --format json > /tmp/trace-to-skill-doctor.json && node dist/src/cli.js lint-agents . --format json > /tmp/trace-to-skill-agents-lint.json && node dist/src/cli.js analyze fixtures --format json > /tmp/trace-to-skill-smoke.json && node dist/src/cli.js suggest fixtures --target agents-md > /tmp/trace-to-skill-suggest.md && node dist/src/cli.js benchmark --format json > /tmp/trace-to-skill-benchmark.json && node dist/src/cli.js scorecard . --format json > /tmp/trace-to-skill-scorecard.json",
44
+ "check": "npm run test && node dist/src/cli.js doctor . --format json > /tmp/trace-to-skill-doctor.json && node dist/src/cli.js lint-agents . --format json > /tmp/trace-to-skill-agents-lint.json && node dist/src/cli.js analyze fixtures --format json > /tmp/trace-to-skill-smoke.json && node dist/src/cli.js suggest fixtures --target agents-md > /tmp/trace-to-skill-suggest.md && node dist/src/cli.js demo --format json > /tmp/trace-to-skill-demo.json && node dist/src/cli.js benchmark --format json > /tmp/trace-to-skill-benchmark.json && node dist/src/cli.js scorecard . --format json > /tmp/trace-to-skill-scorecard.json && node dist/src/cli.js oss-brief . --format json > /tmp/trace-to-skill-oss-brief.json",
43
45
  "prepack": "npm run build",
44
46
  "prepare": "npm run build"
45
47
  },
@@ -85,6 +87,9 @@
85
87
  "codex-resume",
86
88
  "codex-issue-report",
87
89
  "openai-triage",
90
+ "openai-oss",
91
+ "oss-maintainers",
92
+ "codex-demo",
88
93
  "codex-token-burn",
89
94
  "codex-usage",
90
95
  "codex-resource-leak",
@@ -0,0 +1,116 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://raw.githubusercontent.com/grnbtqdbyx-create/trace-to-skill/main/schemas/oss-brief-result.schema.json",
4
+ "title": "trace-to-skill OssBriefResult",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "generatedAt",
9
+ "root",
10
+ "scorecard",
11
+ "qualification",
12
+ "apiCredits",
13
+ "evidence",
14
+ "nextSteps"
15
+ ],
16
+ "properties": {
17
+ "generatedAt": {
18
+ "type": "string",
19
+ "format": "date-time"
20
+ },
21
+ "root": {
22
+ "type": "string"
23
+ },
24
+ "repository": {
25
+ "type": "string"
26
+ },
27
+ "packageName": {
28
+ "type": "string"
29
+ },
30
+ "packageVersion": {
31
+ "type": "string"
32
+ },
33
+ "license": {
34
+ "type": "string"
35
+ },
36
+ "scorecard": {
37
+ "$ref": "#/$defs/scorecard"
38
+ },
39
+ "qualification": {
40
+ "$ref": "#/$defs/briefText"
41
+ },
42
+ "apiCredits": {
43
+ "$ref": "#/$defs/briefText"
44
+ },
45
+ "evidence": {
46
+ "type": "array",
47
+ "items": {
48
+ "type": "string"
49
+ }
50
+ },
51
+ "nextSteps": {
52
+ "type": "array",
53
+ "items": {
54
+ "type": "string"
55
+ }
56
+ }
57
+ },
58
+ "$defs": {
59
+ "scorecard": {
60
+ "type": "object",
61
+ "additionalProperties": false,
62
+ "required": [
63
+ "passed",
64
+ "doctorScore",
65
+ "doctorStatus",
66
+ "benchmarkStatus",
67
+ "benchmarkCases"
68
+ ],
69
+ "properties": {
70
+ "passed": {
71
+ "type": "boolean"
72
+ },
73
+ "doctorScore": {
74
+ "type": "integer",
75
+ "minimum": 0,
76
+ "maximum": 100
77
+ },
78
+ "doctorStatus": {
79
+ "type": "string",
80
+ "enum": [
81
+ "ready",
82
+ "needs-attention"
83
+ ]
84
+ },
85
+ "benchmarkStatus": {
86
+ "type": "string",
87
+ "enum": [
88
+ "pass",
89
+ "fail"
90
+ ]
91
+ },
92
+ "benchmarkCases": {
93
+ "type": "integer",
94
+ "minimum": 0
95
+ }
96
+ }
97
+ },
98
+ "briefText": {
99
+ "type": "object",
100
+ "additionalProperties": false,
101
+ "required": [
102
+ "long",
103
+ "max500"
104
+ ],
105
+ "properties": {
106
+ "long": {
107
+ "type": "string"
108
+ },
109
+ "max500": {
110
+ "type": "string",
111
+ "maxLength": 500
112
+ }
113
+ }
114
+ }
115
+ }
116
+ }