agent-bios 0.14.0 → 0.16.0
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/DEPENDENCIES.md +35 -12
- package/README.md +346 -31
- package/claude/CLAUDE.md +2 -2
- package/claude/agents/frontier.md +1 -1
- package/claude/agents/sweep.md +3 -3
- package/claude/agents/workhorse.md +2 -2
- package/claude/guides/claude-prompting.md +119 -34
- package/claude/guides/cli-multi-model-workflow.md +33 -15
- package/claude/guides/gpt-prompting.md +148 -28
- package/claude/guides/review-request.md +27 -0
- package/claude/guides/session-distill-workflow.md +54 -2
- package/claude/guides/slide-writing/RUNBOOK.md +137 -0
- package/claude/guides/slide-writing/scripts/pair.py +979 -0
- package/claude/guides/slide-writing/scripts/render.mjs +82 -0
- package/claude/guides/slide-writing.md +195 -0
- package/claude/guides/svg-visualization-guide.md +9 -0
- package/claude/guides/verification-discipline.md +5 -1
- package/claude/hooks/tooling-gotchas-hook.py +7 -5
- package/codex/AGENTS.md +2 -2
- package/codex/agents/frontier.toml +2 -1
- package/codex/agents/reviewer.toml +1 -1
- package/codex/agents/sweep.toml +3 -3
- package/codex/agents/workhorse.toml +1 -1
- package/codex/config-additions.toml +1 -1
- package/codex/guides/claude-prompting.md +119 -34
- package/codex/guides/cli-multi-model-workflow.md +33 -15
- package/codex/guides/gpt-prompting.md +148 -28
- package/codex/guides/review-request.md +27 -0
- package/codex/guides/session-distill-workflow.md +54 -2
- package/codex/guides/slide-writing/RUNBOOK.md +137 -0
- package/codex/guides/slide-writing/scripts/pair.py +979 -0
- package/codex/guides/slide-writing/scripts/render.mjs +82 -0
- package/codex/guides/slide-writing.md +195 -0
- package/codex/guides/svg-visualization-guide.md +9 -0
- package/codex/guides/verification-discipline.md +5 -1
- package/compose/assemble.py +290 -14
- package/compose/bootstrap/SKILL.md +119 -0
- package/compose/check-domains.py +102 -9
- package/compose/corpus-state.py +1174 -0
- package/compose/corpus.py +387 -0
- package/compose/corpus_catalog.py +882 -0
- package/compose/corpus_install.py +1617 -0
- package/compose/corpus_session.py +726 -0
- package/compose/corpus_store.py +1414 -0
- package/compose/corpus_transaction.py +236 -0
- package/compose/corpus_ui.py +644 -0
- package/compose/domains.json +101 -100
- package/compose/write-update-cache.py +53 -0
- package/install.sh +174 -24
- package/launch/agent-launch.py +1327 -184
- package/launch/agent-launch.toml +12 -16
- package/launch/i18n/en.toml +113 -7
- package/launch/i18n/ja.toml +113 -7
- package/launch/i18n/ko.toml +113 -7
- package/learn/collect-learning.py +46 -19
- package/learn/migrate-learnings.py +10 -1
- package/package.json +13 -3
- package/provenance.json +1 -1
- package/session-cost.py +22 -2
- package/wrappers/codex-helm.sh +3 -3
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// Render only the sealed HTML and its sealed local assets. No slide styles are injected.
|
|
2
|
+
import {readFile, writeFile, mkdir, realpath} from 'node:fs/promises';
|
|
3
|
+
import {resolve, relative, isAbsolute, sep} from 'node:path';
|
|
4
|
+
import {pathToFileURL, fileURLToPath} from 'node:url';
|
|
5
|
+
import {createRequire} from 'node:module';
|
|
6
|
+
|
|
7
|
+
const [htmlArg, outArg, sealedArg] = process.argv.slice(2);
|
|
8
|
+
if (!htmlArg || !outArg || !sealedArg) throw new Error('Usage: render.mjs SEALED_HTML OUTPUT_DIR SEALED_ROOT');
|
|
9
|
+
const modulePath = process.env.SLIDE_PLAYWRIGHT_MODULE;
|
|
10
|
+
const browserPath = process.env.SLIDE_BROWSER_EXECUTABLE;
|
|
11
|
+
if (!modulePath || !browserPath) throw new Error('SLIDE_PLAYWRIGHT_MODULE and SLIDE_BROWSER_EXECUTABLE are required');
|
|
12
|
+
const {chromium} = await import(pathToFileURL(resolve(modulePath)).href);
|
|
13
|
+
const require = createRequire(resolve(modulePath));
|
|
14
|
+
const {PDFDocument} = require('pdf-lib');
|
|
15
|
+
const html = await realpath(htmlArg), sealed = await realpath(sealedArg), out = resolve(outArg);
|
|
16
|
+
const inside = path => { const r = relative(sealed, path); return r !== '..' && !r.startsWith('..' + sep) && !isAbsolute(r); };
|
|
17
|
+
if (!inside(html)) throw new Error('HTML is outside sealed input root');
|
|
18
|
+
await mkdir(out, {recursive:true});
|
|
19
|
+
const browser = await chromium.launch({headless:true, executablePath:resolve(browserPath)});
|
|
20
|
+
try {
|
|
21
|
+
const page = await browser.newPage({viewport:{width:1400,height:1000}, deviceScaleFactor:1});
|
|
22
|
+
const blocked = [], errors = [];
|
|
23
|
+
page.on('pageerror', e => errors.push(e.message));
|
|
24
|
+
await page.route('**/*', async route => {
|
|
25
|
+
const u = route.request().url();
|
|
26
|
+
if (u.startsWith('data:') || u.startsWith('about:')) return route.continue();
|
|
27
|
+
if (u.startsWith('file:')) {
|
|
28
|
+
try { if (inside(await realpath(fileURLToPath(u)))) return route.continue(); } catch {}
|
|
29
|
+
}
|
|
30
|
+
blocked.push(u); return route.abort();
|
|
31
|
+
});
|
|
32
|
+
await page.emulateMedia({media:'print'});
|
|
33
|
+
await page.goto(pathToFileURL(html).href, {waitUntil:'networkidle'});
|
|
34
|
+
await page.evaluate(() => document.fonts.ready);
|
|
35
|
+
const pages = await page.evaluate(() => [...document.querySelectorAll('section.slide')].map((slide,i) => {
|
|
36
|
+
const rect = slide.getBoundingClientRect(), texts = [], outside = [];
|
|
37
|
+
const walker = document.createTreeWalker(slide, NodeFilter.SHOW_TEXT);
|
|
38
|
+
let node;
|
|
39
|
+
while ((node = walker.nextNode())) {
|
|
40
|
+
const value = node.textContent.trim(); if (!value) continue;
|
|
41
|
+
const parent = node.parentElement, style = getComputedStyle(parent);
|
|
42
|
+
if (style.visibility === 'hidden' || style.display === 'none') continue;
|
|
43
|
+
const range = document.createRange(); range.selectNodeContents(node);
|
|
44
|
+
const bounds = range.getBoundingClientRect(); if (!bounds.width || !bounds.height) continue;
|
|
45
|
+
const transforms = [];
|
|
46
|
+
for (let p=parent; p && p!==slide.parentElement; p=p.parentElement) {
|
|
47
|
+
const transform = getComputedStyle(p).transform;
|
|
48
|
+
if (transform !== 'none') transforms.push(transform);
|
|
49
|
+
}
|
|
50
|
+
const item = {text:value, font_px:parseFloat(style.fontSize), x:bounds.x-rect.x, y:bounds.y-rect.y,
|
|
51
|
+
width:bounds.width, height:bounds.height, alignment:style.textAlign,
|
|
52
|
+
declared_level:parent.closest('[data-level]')?.getAttribute('data-level') ?? null,
|
|
53
|
+
font_family:style.fontFamily, font_weight:style.fontWeight, transforms};
|
|
54
|
+
texts.push(item);
|
|
55
|
+
if (item.x < -1 || item.y < -1 || item.x+item.width > rect.width+1 || item.y+item.height > rect.height+1) outside.push(item);
|
|
56
|
+
}
|
|
57
|
+
const regions = [...slide.querySelectorAll('[data-role]')].map(n => {
|
|
58
|
+
const r=n.getBoundingClientRect(); return {role:n.dataset.role,x:r.x-rect.x,y:r.y-rect.y,width:r.width,height:r.height};
|
|
59
|
+
});
|
|
60
|
+
return {id:'p'+String(i+1).padStart(4,'0'), source_page:slide.dataset.sourcePage ?? '',
|
|
61
|
+
title:slide.querySelector('[data-role="title"],h1,h2')?.textContent.trim() ?? '',
|
|
62
|
+
width:rect.width,height:rect.height,text:texts,outside,regions};
|
|
63
|
+
}));
|
|
64
|
+
if (!pages.length) throw new Error('No section.slide pages were rendered');
|
|
65
|
+
for (const p of pages) {
|
|
66
|
+
if (!(Number.isFinite(p.width) && Number.isFinite(p.height) && p.width>0 && p.height>0)) throw new Error('Invalid page geometry');
|
|
67
|
+
if (Math.abs(p.width-pages[0].width)>1 || Math.abs(p.height-pages[0].height)>1) throw new Error('Pages have different dimensions');
|
|
68
|
+
}
|
|
69
|
+
const slides = page.locator('section.slide');
|
|
70
|
+
for (let i=0; i<pages.length; i++) await slides.nth(i).screenshot({path:resolve(out,`page-${String(i+1).padStart(4,'0')}.png`),animations:'disabled'});
|
|
71
|
+
await page.pdf({path:resolve(out,'deck.pdf'),width:pages[0].width+'px',height:pages[0].height+'px',
|
|
72
|
+
printBackground:true,preferCSSPageSize:false,margin:{top:0,right:0,bottom:0,left:0}});
|
|
73
|
+
const pdf = await PDFDocument.load(await readFile(resolve(out,'deck.pdf')));
|
|
74
|
+
if (pdf.getPageCount() !== pages.length) throw new Error(`PDF page count ${pdf.getPageCount()} differs from HTML page count ${pages.length}`);
|
|
75
|
+
const pdfSizes=pdf.getPages().map(p=>p.getSize());
|
|
76
|
+
for (const size of pdfSizes) if (Math.abs(size.width-pages[0].width*.75)>1 || Math.abs(size.height-pages[0].height*.75)>1) throw new Error('PDF dimensions differ from measured slide dimensions');
|
|
77
|
+
const report={pages, pdf_page_count:pdf.getPageCount(), pdf_sizes_points:pdfSizes,
|
|
78
|
+
font_metric:'font_px is computed CSS size; inspect glyph rectangles, transforms, font loading and actual image separately',
|
|
79
|
+
blocked_requests:blocked, script_errors:errors};
|
|
80
|
+
await writeFile(resolve(out,'measurements.json'),JSON.stringify(report,null,2)+'\n');
|
|
81
|
+
process.stdout.write(JSON.stringify({pages:pages.length,pdf_pages:pdf.getPageCount(),blocked_requests:blocked.length,script_errors:errors.length})+'\n');
|
|
82
|
+
} finally { await browser.close(); }
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
---
|
|
2
|
+
guide_id: slide-writing
|
|
3
|
+
language: en
|
|
4
|
+
status: active
|
|
5
|
+
description: Apply shared source-fidelity, meaning, structure, and layout criteria when creating, revising, or reviewing slides, in any presentation format.
|
|
6
|
+
use_when:
|
|
7
|
+
- creating, revising, or reviewing slides and presentation materials
|
|
8
|
+
- deciding slide headlines, logical relationships, body hierarchy, spacing, or alignment
|
|
9
|
+
resources:
|
|
10
|
+
- Read `${CLAUDE_CONFIG_DIR:-$HOME/.claude}/guides/slide-writing/RUNBOOK.md` only when using the paired static HTML/PDF execution and review path.
|
|
11
|
+
core_rules:
|
|
12
|
+
- Read this primary guide for every slide or presentation task; it is the shared semantic source.
|
|
13
|
+
- Use the companion runbook and scripts only for an explicitly applicable static HTML/PDF job.
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
<!-- criterion:c0000 -->
|
|
17
|
+
# Principles for Writing Slides
|
|
18
|
+
|
|
19
|
+
Structure slides so the reader first understands the central judgment, then can verify on the same screen the evidence and conditions supporting it. Visualizations express logical relationships between concepts through position, shape, size, grouping, and connections. The relationship stated by the wording must match the relationship read from the screen.
|
|
20
|
+
|
|
21
|
+
After deciding which meaning from the source must be preserved, design the groupings and relationships, body hierarchy, space, and reading order. Set specific values for presentation specifications for each task. When preserving meaning, readability, and use of space conflict, first reconsider the arrangement and content composition. Do not conceal a space problem by combining independent concepts or by making only a particular body level smaller.
|
|
22
|
+
<!-- /criterion -->
|
|
23
|
+
|
|
24
|
+
<!-- criterion:c0001 -->
|
|
25
|
+
## 1. Define the central judgment of each slide and the role of its body
|
|
26
|
+
|
|
27
|
+
Each slide answers what the reader needs to understand or judge. Groupings in the body connect the evidence, comparisons, processes, and conditions that explain that answer. When independent questions are mixed together, split the slide or define the higher-level question that explains why they belong together.
|
|
28
|
+
|
|
29
|
+
A slide may contain multiple facts. Each fact's role in the central judgment and its relationship to the others must be clear. Make the key relationships findable on the screen before the reader must assemble the content and infer them. Rather than connect every detailed condition with lines, reveal first the relationships needed to understand the central judgment.
|
|
30
|
+
<!-- /criterion -->
|
|
31
|
+
|
|
32
|
+
<!-- criterion:c0002 -->
|
|
33
|
+
## 2. Write headlines so the subject and conclusion are clear even when only the headlines are read
|
|
34
|
+
|
|
35
|
+
For a slide that explains content, state the subject and central judgment in its headline. Replace with a concrete sentence any reference that requires the preceding slide to understand, a title that only previews a count, or wording that omits the subject or predicate excessively. State the judgment within the scope and degree of certainty that the evidence supports.
|
|
36
|
+
|
|
37
|
+
Slides for overview, definition, or transition use a title that reveals their role and the content they convey. Do not force a claim onto a slide that has no conclusion. The sequence of problem framing and judgments must also connect when all headlines are read in order.
|
|
38
|
+
|
|
39
|
+
Headline line breaks follow units of meaning such as phrases and clauses. If only one final character or grammatical ending remains on the next line, adjust the headline width, phrasing, or line break. Distinguish a deliberately short line containing an independent word from a line that remains because a word was split off.
|
|
40
|
+
<!-- /criterion -->
|
|
41
|
+
|
|
42
|
+
<!-- criterion:c0003 -->
|
|
43
|
+
## 3. Preserve the names and distinctions of key concepts
|
|
44
|
+
|
|
45
|
+
Use the same name for the same concept. Explain a technical concept where needed, and do not alternate synonyms merely to vary the writing style. Even when shortening an explanation, retain each item's name and its difference from other items.
|
|
46
|
+
|
|
47
|
+
Before summarizing, identify the concepts, indicators, and conditions that must be read, recorded, or judged independently. An item defined separately in the source must remain findable in the result under its own name and definition. If distinct items are collapsed into one combined name, restore the distinction. Multiple items may appear in the same box; confirm their independence through the correspondence of names, definitions, and values rather than through the number of boxes.
|
|
48
|
+
|
|
49
|
+
Distinguish subjects, roles, activities, outputs, outcomes, and evaluation criteria. Distinguish examples from selection results, hypotheses from confirmed facts, and temporal order from causality. Also retain the conditions, exceptions, and applicable scope under which a relationship holds. When comparing numbers, align units, periods, subjects, and denominators; if the bases differ, state that difference.
|
|
50
|
+
|
|
51
|
+
If the source does not establish a relationship or scope, retain that uncertainty. Do not add an unsupported cause, sequence, or superiority merely to create a connection needed for visualization.
|
|
52
|
+
<!-- /criterion -->
|
|
53
|
+
|
|
54
|
+
<!-- criterion:c0004 -->
|
|
55
|
+
## 4. Create a reading order from conclusion to evidence
|
|
56
|
+
|
|
57
|
+
Arrange information on one screen according to the following roles. Use the roles needed for the slide's purpose, and do not repeat the same content in multiple locations.
|
|
58
|
+
|
|
59
|
+
| Information role | What the reader confirms |
|
|
60
|
+
|---|---|
|
|
61
|
+
| Headline | The subject and central judgment of this slide |
|
|
62
|
+
| Introduction | The judgment's scope and premise, and how to read the body |
|
|
63
|
+
| Current-position indicator | The discussion this slide belongs to in the overall document |
|
|
64
|
+
| Body | The evidence and relationships supporting the judgment |
|
|
65
|
+
| Conclusion or implication | An additional judgment or action derived from the body |
|
|
66
|
+
| Source | The material and location for verifying the evidence |
|
|
67
|
+
|
|
68
|
+
In the body, make visible where reading begins, what is compared together, and where to move next. Put information compared on the same basis in corresponding positions, and reveal any branch or convergence point. If two flows mix, divide the space or redefine the higher-level grouping.
|
|
69
|
+
|
|
70
|
+
Separate conclusions that only hold after reading the body's explanation from source indicators. Make conditions, exceptions, and responsibility scope that change the interpretation readable in the body close to the relevant claim. Set the order of emphasis so decorative position indicators or repeated titles do not draw attention away from the body.
|
|
71
|
+
<!-- /criterion -->
|
|
72
|
+
|
|
73
|
+
<!-- criterion:c0005 -->
|
|
74
|
+
## 5. Design both the composition within groupings and the relationships between them
|
|
75
|
+
|
|
76
|
+
Group the body into units with connected meaning, such as comparison targets, processes, responsibilities by subject, use of results, or common conditions. Arrange them so relationships within a grouping appear closer than relationships between groupings. Elements grouped by the same box, background, or boundary need a reason to be read together.
|
|
77
|
+
|
|
78
|
+
Boxes, background contrast, dividing lines, and whitespace are means to reveal grouping boundaries. A box is unnecessary when alignment, a common axis, connections, or continuity of shape make one object clear. Tables retain the comparison basis and the correspondence of rows and columns. A process may use boxes by step or be divided within one area; either way, the overall flow must read as continuous.
|
|
79
|
+
|
|
80
|
+
Set the unit for dividing boxes according to concepts or steps that must be read independently. Before putting every sentence in a separate box or gathering distinct judgments in one large box, check what distinction the reader gains. If the relationship between boxes must be left only to sentence interpretation, reinforce the arrangement, containment, or connections.
|
|
81
|
+
<!-- /criterion -->
|
|
82
|
+
|
|
83
|
+
<!-- criterion:c0006 -->
|
|
84
|
+
## 6. Express logical relationships through space, shape, and connections
|
|
85
|
+
|
|
86
|
+
First determine what is related to what, and how. Confirm the direction, conditions for holding, and applicable scope of the relationship, then select an expression that makes it readable. A relationship may have several valid arrangements.
|
|
87
|
+
|
|
88
|
+
| Relationship to show | Expressions that can be used | Meaning to preserve |
|
|
89
|
+
|---|---|---|
|
|
90
|
+
| Causality | Directional arrangement and connections among cause, action, and result | What affects what, and the strength and conditions of the evidence |
|
|
91
|
+
| Hierarchy or classification | A composition that divides branches or stages beneath a higher-level concept | What is classified according to which criteria |
|
|
92
|
+
| Containment or composition | Nested boxes, common boundaries, and the arrangement of component elements | What is part of what, and the scope of containment |
|
|
93
|
+
| Dependency or reliance | Layers of foundation and dependent elements, and connections showing prerequisites | What requires what; do not turn dependency into causality or containment |
|
|
94
|
+
| Equivalence or parallelism | Same-level columns, rows, comparison tables, or matrices | Independent alternatives or parallel evidence, and the common comparison basis |
|
|
95
|
+
| Equality or correspondence | An equals sign or a correspondence indicator between objects | The scope of the same meaning or value and its distinction from simple correspondence; use equals signs for equality |
|
|
96
|
+
| Correlation | A connection that explicitly states the association, or a chart using actual data | The fact that things vary together or are associated, and its distinction from a causal claim |
|
|
97
|
+
| Sequence or transition | Connected boxes, wedges, flowcharts, or timelines | Direction of progress, branching or convergence, and transition conditions; if using a time axis, periods and points in time |
|
|
98
|
+
| Roles or handoffs | Areas or lanes by subject, and handoff points | Boundaries of execution responsibility and what is handed over |
|
|
99
|
+
| Numeric magnitude, change, or distribution | A chart appropriate to the data and comparison purpose | Actual values and units, axes, and comparison basis |
|
|
100
|
+
|
|
101
|
+
The table's composition is a set of options, not a fixed symbol dictionary. Use visual markers with the same role consistently within a document. If a symbol's meaning could be confused, place a short relationship explanation near the connected objects. When position and connecting lines alone do not settle the meaning, make the wording readable with them.
|
|
102
|
+
|
|
103
|
+
Use nesting and layering to reveal containment, dependency, or differences in level. Do not treat a simple shadow or overlap as evidence of a logical relationship. Adjust the arrangement if boundaries or content are obscured. Make equivalent elements recognizable as being at the same level, but differing amounts of content do not require every box to have the same area. Check that a difference cannot be mistaken for superiority or quantity.
|
|
104
|
+
|
|
105
|
+
### Selection order for directional expressions
|
|
106
|
+
|
|
107
|
+
For a relationship that must show direction, secure both the spacing between boxes and room for their content.
|
|
108
|
+
|
|
109
|
+
1. First check whether changing the box's end or boundary can express the content and direction together. The width for text and the distinction between concepts must remain intact.
|
|
110
|
+
2. If a modified box is unnatural, connect the flow with a short wedge within the standard spacing.
|
|
111
|
+
3. If a wedge cannot make the relationship and connected objects clear, use an arrow. Within the readable range, reduce the connection length and space reserved solely for it.
|
|
112
|
+
|
|
113
|
+
An arrow may be selected directly when it ensures visibility while also minimizing empty space. It is unnecessary to produce every alternative in sequence. Judge appropriateness by the actual screen's relationships, spacing, and readability rather than by the reason a symbol was selected. Do not apply this order to a relationship that does not need direction.
|
|
114
|
+
|
|
115
|
+
It must be clear what arrows, wedges, and pointed ends of boxes point from and to. When connecting lines obscure content or several lines overlap so the target becomes ambiguous, first redesign box positions, groupings, and the branch structure.
|
|
116
|
+
|
|
117
|
+
A step guide that states periods may use equal widths. If using a quantitative axis where length represents time, represent actual periods. Do not use axes, area, or height that makes a concept map appear to be a measured result; if confusion is possible, indicate near the diagram that it is a concept map. Retain the units, axes, and legends necessary to interpret numeric charts.
|
|
118
|
+
<!-- /criterion -->
|
|
119
|
+
|
|
120
|
+
<!-- criterion:c0007 -->
|
|
121
|
+
## 7. Allocate space to the body area and within groupings
|
|
122
|
+
|
|
123
|
+
First determine the area the body will use between the headline and introduction, and the conclusion and source. Allocate area to each grouping according to the amount of information needed to explain the central judgment, the reading order, and the relationship structure. Content slides should align the outer boundaries of higher-level groupings and use the entire body area.
|
|
124
|
+
|
|
125
|
+
Apply consistent horizontal and vertical spacing between groupings at the same level. For areas compared side by side, align their starting points and comparison baselines, and preserve row and column correspondence. Distinguish the internal whitespace of nested groupings from the spacing between higher-level groupings because their roles differ. When spacing differs, check the relationship that the difference conveys.
|
|
126
|
+
|
|
127
|
+
Space allocation must continue from outer boxes to internal titles, tables, rows, and text. If a box with a short explanation is largely empty while another box concentrates essential evidence in small text, reconsider the area allocation. Do not treat the space problem as solved merely because all boxes have the same size or text was moved to vertical center.
|
|
128
|
+
|
|
129
|
+
Check separately the space between the body boundary and the final grouping, and the space between the end of a grouping and its actual content. Also examine the space occupied by connecting symbols. Retain whitespace that distinguishes groupings and supports reading order. Reduce unnecessary empty areas by adjusting the arrangement, content amount, or line breaks, rather than filling them by only expanding spacing between sentences.
|
|
130
|
+
|
|
131
|
+
Cover, transition, or closing slides, and slides focused on one visual object, may use whitespace for attention and distinction. Judge its appropriateness by the slide's reading purpose and actual content arrangement. Do not make one empty-space ratio the passing threshold for every slide.
|
|
132
|
+
<!-- /criterion -->
|
|
133
|
+
|
|
134
|
+
<!-- criterion:c0008 -->
|
|
135
|
+
## 8. Adjust content volume and text arrangement together
|
|
136
|
+
|
|
137
|
+
Information density is achieved when the evidence and conditions needed for a judgment are included faithfully and can be read. In a presentation, the key point and relationships appear first; when read alone, definitions, interpretation, and conditions can be followed.
|
|
138
|
+
|
|
139
|
+
When space is lacking, remove redundant wording and adjust column widths, paragraph divisions, row heights, internal whitespace, and the area of each grouping. Place sentences with different roles separately, as with definitions and interpretations in a comparison table. Do not hide essential evidence by shrinking type or moving it to footnotes.
|
|
140
|
+
|
|
141
|
+
When space remains, first check whether necessary explanation is missing, then adjust grouping proportions, line arrangement, and actual content size. Do not add claims or figures absent from the source, or pad with the same statement. Line breaks in sentences and names follow units of meaning, and related units and conditions must not be read separately from the body.
|
|
142
|
+
|
|
143
|
+
When adjusting size, apply the document-wide criteria for each body level. Do not enlarge or reduce only the same level in a particular slide or box. If a common size changes, check every slide that uses that level.
|
|
144
|
+
|
|
145
|
+
When it is difficult to maintain semantic distinction and readability, simplify the structure or divide the slides at units where meaning is complete. If slide-count or output constraints make resolution impossible, state the conflicting constraints and remaining issue. Confirm readability at the actual delivery size.
|
|
146
|
+
<!-- /criterion -->
|
|
147
|
+
|
|
148
|
+
<!-- criterion:c0009 -->
|
|
149
|
+
## 9. Connect semantic levels within a slide to document-wide text sizes
|
|
150
|
+
|
|
151
|
+
Determine semantic hierarchy within each slide's body. First distinguish what is the higher-level concept and which items and explanations belong below it. Do not determine body text sizes by constructing a hierarchy among concepts across the whole document or by judging which slide's topic is more important.
|
|
152
|
+
|
|
153
|
+
Connect the levels determined on each slide to sizes shared across the document. Within a slide, express a higher level larger than a lower level, and make the difference between levels discernible on the actual screen. Text at the same level uses the same size even when it is on a different slide or in a different box. The number of levels and actual size values are set in the task specification; do not force a level that a slide does not need. If values have not been set, the author selects them based on delivery purpose, screen size, and content volume, then records them as the application standard.
|
|
154
|
+
|
|
155
|
+
| Situation | Basis for setting size |
|
|
156
|
+
|---|---|
|
|
157
|
+
| Different concepts on different slides occupy the same body level | Apply the same size without comparing the concepts' relationship or importance. |
|
|
158
|
+
| The same concept is used as a higher-level grouping on one slide and a detailed explanation on another | Apply the size appropriate to its level within each slide. |
|
|
159
|
+
| Text at the same level is long or differs only in form, such as a sentence versus a word | Keep the same size and adjust through width, line breaks, alignment, and arrangement. |
|
|
160
|
+
|
|
161
|
+
Do not determine a semantic level merely from the form of being a table header or bold. Base it on the actual role it plays in that slide's body. Classify table values and units by their meaning and reading role as well; do not rename a level as lower merely to fit content in smaller type. Manage size criteria for headlines, introductions, and sources separately from body levels.
|
|
162
|
+
|
|
163
|
+
Make the roles of higher-level area titles, column titles, lower-level titles, and body values visible. Distinguish them by adding background contrast, dividing lines, or boldness to size based on semantic level, while using the same emphasis treatment consistently for the same role within the document. Distinguish table headers from the first data row, and do not layer further emphasis when the distinction is already sufficient. Do not rely only on differences in a specific color.
|
|
164
|
+
|
|
165
|
+
Adjust if hierarchy is reversed or blurred on the actual screen even when level names or style settings are correct. Check size consistency and the validity of semantic-level classification separately.
|
|
166
|
+
<!-- /criterion -->
|
|
167
|
+
|
|
168
|
+
<!-- criterion:c0010 -->
|
|
169
|
+
## 10. Align text according to its form and reading purpose
|
|
170
|
+
|
|
171
|
+
Choose alignment according to the content form of the relevant block and the reading or comparison the reader performs. Even at the same semantic level, sentences and short labels may use different alignment.
|
|
172
|
+
|
|
173
|
+
| Content and reading mode | Basis for choosing alignment |
|
|
174
|
+
|---|---|
|
|
175
|
+
| Continuous sentences, long explanations, or multi-line evidence | Use alignment that makes it easy to read from the beginning of each line. Left alignment is usually appropriate. |
|
|
176
|
+
| Short labels, independent words, or a list of similarly sized words | Consider whether center alignment enables faster recognition of the grouping and comparison targets. Do not require it merely because the content is words. |
|
|
177
|
+
| Numbers whose magnitude is compared | Align the baseline needed for comparison, such as digit places or decimal points. Standardize units and notation. |
|
|
178
|
+
| Titles and explanations, table headers and values | Choose alignment appropriate to each role while preserving the correspondence between titles and content. |
|
|
179
|
+
|
|
180
|
+
Choose horizontal and vertical alignment separately. Centering a short label within a cell and aligning the starting line of a long explanation to the top may suit different reading tasks. Within the same comparison, standardize the alignment basis for items with the same role, form, and reading purpose.
|
|
181
|
+
|
|
182
|
+
Vertical centering is a choice that changes position within a cell. It does not justify excessive box height. When line breaks or content volume changes, recheck alignment and row-column correspondence.
|
|
183
|
+
<!-- /criterion -->
|
|
184
|
+
|
|
185
|
+
<!-- criterion:c0011 -->
|
|
186
|
+
## 11. Verify the source, wording, and visual expression separately
|
|
187
|
+
|
|
188
|
+
When comparing against the source, check that key concepts, figures, conditions, subjects, and relationships are preserved. On the screen, read separately the relationship stated by the actual wording and the relationship indicated by the arrangement, shape, and symbols, then check that they agree. Correct the expression if wording states correlation but a symbol implies causality, or if independent alternatives appear to be consecutive stages.
|
|
189
|
+
|
|
190
|
+
First verify the composition method on representative slides, then review the entire document after expansion. Titles, groupings, hierarchy, and flow must be readable without the author's explanation. When changing a common size or style, recheck every affected slide type.
|
|
191
|
+
|
|
192
|
+
In the final delivery format, inspect line breaks, contrast, dividing lines, backgrounds, connection targets, and page breaks. Check versions that omit some elements so they do not leave an empty space or broken reference. Also check whether the screen actually reviewed and the document to be delivered represent the same content.
|
|
193
|
+
|
|
194
|
+
Successful rendering, no overflow beyond the page, and the author's declaration of completion do not replace quality review. Retain evidence from source comparison and screen review, and distinguish items that were not verified from items whose judgment is ambiguous. After correcting remaining issues, recheck, or deliver with unresolved limitations stated.
|
|
195
|
+
<!-- /criterion -->
|
|
@@ -36,6 +36,15 @@ For `IMPLEMENTATION_MAP.html`, include one self-contained SVG service blueprint
|
|
|
36
36
|
that shows the whole service or implemented system at the right level of
|
|
37
37
|
abstraction.
|
|
38
38
|
|
|
39
|
+
## Slide And Presentation Work
|
|
40
|
+
|
|
41
|
+
When creating, revising, or reviewing slides or presentation materials, read the
|
|
42
|
+
normal guide at `${CLAUDE_CONFIG_DIR:-$HOME/.claude}/guides/slide-writing.md` for
|
|
43
|
+
the semantic criteria before choosing a visual expression. Read its companion
|
|
44
|
+
runbook only for an explicitly applicable static HTML/PDF job path. This guide
|
|
45
|
+
helps make logical relationships visually readable; it does not replace the
|
|
46
|
+
that guide's source-fidelity, hierarchy, spacing, or review criteria.
|
|
47
|
+
|
|
39
48
|
## When To Use SVG
|
|
40
49
|
|
|
41
50
|
Prefer SVG when the visual needs any of these:
|
|
@@ -175,7 +175,11 @@ produce a green with no evidence behind it:
|
|
|
175
175
|
healed downstream or coinciding with a default. The runner must report build failure,
|
|
176
176
|
unreachable, and equivalent distinctly from KILLED and SURVIVED, and halt on a moved anchor.
|
|
177
177
|
More tests red than the mutation should touch indicts it; classify a survivor (rebuild,
|
|
178
|
-
discard, genuine gap) before writing a test.
|
|
178
|
+
discard, genuine gap) before writing a test. **Equivalent is a verdict about the probe as
|
|
179
|
+
much as the mutant**: a probe that is dead or returns a constant reports every mutant as
|
|
180
|
+
equivalent, and one aimed at an input the mutant does not affect reports the same. Refuse
|
|
181
|
+
the verdict unless the probe is shown to discriminate on UNMUTATED code and to exercise the
|
|
182
|
+
input the mutant targets — an unusable probe is its own outcome, not an equivalent mutant.
|
|
179
183
|
- **The probe that measured the original.** A copied script that derives its root or targets from
|
|
180
184
|
its own location (`$0`, `BASH_SOURCE`, a `cd` to its parent) scans the original tree, not the
|
|
181
185
|
copy, so its verdict says nothing about the mutation you planted. Pin the subject in the copy,
|
|
@@ -14,8 +14,9 @@ GUIDE = "guides/tooling-gotchas.md"
|
|
|
14
14
|
|
|
15
15
|
# (name, compiled trigger, one-line reminder, guide anchor). Priority order; max 2 injected.
|
|
16
16
|
#
|
|
17
|
-
# The anchor is the heading in tooling-gotchas.md this rule compresses. It exists because
|
|
18
|
-
#
|
|
17
|
+
# The anchor is the heading in tooling-gotchas.md this rule compresses. It exists because
|
|
18
|
+
# agent-bios registers this hook on Claude only — Codex has hooks of its own, they are simply
|
|
19
|
+
# not wired here — so the guide is what a Codex reader gets instead: a rule admitted here
|
|
19
20
|
# with no counterpart there would silently give the two hosts different guidance. The mapping
|
|
20
21
|
# is declared rather than matched, because a rule name and a guide heading do not share a
|
|
21
22
|
# string. --self-test checks every anchor against the guide AND its codex mirror.
|
|
@@ -224,11 +225,12 @@ def main() -> int:
|
|
|
224
225
|
|
|
225
226
|
|
|
226
227
|
def self_test() -> int:
|
|
227
|
-
"""Two halves, because this hook
|
|
228
|
+
"""Two halves, because this hook reaches the two hosts differently.
|
|
228
229
|
|
|
229
230
|
Claude gets the injection, so the first half runs the real entry point over real stdin and
|
|
230
|
-
requires the message out.
|
|
231
|
-
and the second half is the only thing that keeps the two hosts saying the same
|
|
231
|
+
requires the message out. Nothing registers this hook on Codex, so its equivalent is the
|
|
232
|
+
guide — and the second half is the only thing that keeps the two hosts saying the same
|
|
233
|
+
thing. Codex does have hooks; wiring them is open work, not a host limitation.
|
|
232
234
|
"""
|
|
233
235
|
import pathlib, subprocess
|
|
234
236
|
|
package/codex/AGENTS.md
CHANGED
|
@@ -85,8 +85,8 @@
|
|
|
85
85
|
## Multi-Model Workflow
|
|
86
86
|
|
|
87
87
|
- Codex-only standing authorization: on root/main local tasks, ordinary subagent dispatch is authorized when the `When To Spawn` gates fire. Explicit no-fan-out wins. Delegated agents may re-delegate only when their role allows. This grants no destructive, remote, credential, install, OAuth, push, live-network-expanding, or broader-sandbox authority.
|
|
88
|
-
- Standing spawn policy: check the spawn gates at every work-unit boundary — judgment latitude applies inside a gate, never to whether the gates are checked. Independence:
|
|
89
|
-
- Down-spawns carry a machine-checkable done-when on decision-complete work with staged output (no external irreversible actions) and
|
|
88
|
+
- Standing spawn policy: check the spawn gates at every work-unit boundary — judgment latitude applies inside a gate, never to whether the gates are checked. Independence: before presenting a load-bearing conclusion or taking an irreversible step, propose the cross-check unprompted; the user should never have to ask for it. Independence comes from the seat you dispatch to, so name it. Parallelism: two or more independent items spawn in parallel — SWEEP when each item applies one explicit rule and returns ambiguity as an exception, else WORKHORSE. Residual context: work whose log dwarfs the conclusion the main needs spawns with a bounded report contract. Escalation: an irreversible or authority-changing action ahead, two failed attempts, or two persisting design alternatives spawns a bounded FRONTIER judgment with a blind packet (evidence, constraints, rubric, neutral alternatives — never your draft conclusion) and a pre-noted change condition. Specifiability/de-minimis: work needing your live context, or whose verification would repeat the reasoning, or whose packet outweighs the work, stays inline.
|
|
89
|
+
- Down-spawns carry a machine-checkable done-when on decision-complete work with staged output (no external irreversible actions) and a tier pinned before dispatch. Record one line per gate decision — `SpawnGate: <gate> <tier> spawn|inline — <why>` — and for FRONTIER record the disposition afterward (what changed, or why nothing did). A launch contract's `Delegation=off` lifts the spawn obligation, not the records; explicit user no-fan-out always wins.
|
|
90
90
|
- For work spanning multiple models or CLI agents, context resets and handoffs, unattended LLM batches (including orchestrated subagent fleets), or parallel worktree branches, read and use `${CODEX_HOME:-$HOME/.codex}/guides/cli-multi-model-workflow.md` as a scoped extension of this section.
|
|
91
91
|
- For composing a prompt, packet, or tool description aimed at a specific model family — including cross-family review dispatch, porting a prompt written for an older model, or choosing a reasoning-effort level for a model family — read and use `${CODEX_HOME:-$HOME/.codex}/guides/gpt-prompting.md` for gpt-family targets and `${CODEX_HOME:-$HOME/.codex}/guides/claude-prompting.md` for claude-family targets as scoped extensions of this section.
|
|
92
92
|
- Allocate models by difficulty × blast radius, not phase name; when implementation ran on a cheaper tier, compensate by raising reviewer effort or adding a reviewer kind — never economize on implementation and verification at once.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
name = "reviewer"
|
|
2
2
|
description = "Adversarial review focused on correctness, regressions, security, and missing tests."
|
|
3
3
|
model = "gpt-5.6-terra"
|
|
4
|
-
model_reasoning_effort = "
|
|
4
|
+
model_reasoning_effort = "xhigh"
|
|
5
5
|
sandbox_mode = "read-only"
|
|
6
6
|
|
|
7
7
|
developer_instructions = """
|
package/codex/agents/sweep.toml
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
name = "sweep"
|
|
2
|
-
description = "
|
|
2
|
+
description = "Read-only checks applying one explicit rule to each item; report ambiguity as an exception."
|
|
3
3
|
model = "gpt-5.6-luna"
|
|
4
|
-
model_reasoning_effort = "
|
|
4
|
+
model_reasoning_effort = "max"
|
|
5
5
|
sandbox_mode = "read-only"
|
|
6
6
|
|
|
7
7
|
developer_instructions = """
|
|
8
|
-
|
|
8
|
+
Apply one explicit rule to each item in the supplied inputs and stop at the declared boundary. Read-only: do not edit, broaden scope, choose architecture, or seek authority. Use relevant tools, parallelize independent reads, and surface ambiguity instead of inferring intent. Return status, the non-empty items_checked, findings, proving evidence/command, and risks_or_escalations.
|
|
9
9
|
"""
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
name = "workhorse"
|
|
2
2
|
description = "Bounded implementation, fixes, and per-item judgment for delegated Codex work."
|
|
3
3
|
model = "gpt-5.6-terra"
|
|
4
|
-
model_reasoning_effort = "
|
|
4
|
+
model_reasoning_effort = "xhigh"
|
|
5
5
|
|
|
6
6
|
developer_instructions = """
|
|
7
7
|
Complete one bounded implementation, fix, or per-item judgment from a packet naming objective, frozen scope/inputs, allowed actions, output, done-when, and verification. Preserve out-of-scope behavior, batch independent reads, and escalate missing decisions/authority. Inherit sandbox; dangerous, remote, credential, install, OAuth, push, or live-network-expanding actions require exact original-user authorization. Run the narrowest reliable changed-path check and report status, files_or_items_touched, evidence, verification or gap, and risks_or_escalations.
|
|
@@ -18,5 +18,5 @@ description = "Bounded implementation, fixes, and per-item judgment for delegate
|
|
|
18
18
|
config_file = "${CODEX_HOME}/agents/workhorse.toml"
|
|
19
19
|
|
|
20
20
|
[agents.sweep]
|
|
21
|
-
description = "
|
|
21
|
+
description = "Read-only checks applying one explicit rule to each item; report ambiguity as an exception."
|
|
22
22
|
config_file = "${CODEX_HOME}/agents/sweep.toml"
|