con un clic
task-editorial
Write MDX editorial articles explaining AICC competition solutions
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
Write MDX editorial articles explaining AICC competition solutions
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
| name | task-editorial |
| description | Write MDX editorial articles explaining AICC competition solutions |
| license | MIT |
| compatibility | opencode |
| metadata | {"audience":"maintainers","workflow":"general"} |
Write high-quality MDX editorial articles that explain AI competition solutions. Editorials are published at /solutions/round-{N}/{task-slug} on the AICC website and must follow strict formatting, design, and quality conventions.
This skill depends on two external tools:
jupyter-notebook skill — provides the ipynb CLI for reading .ipynb notebooks. Activate it before exploring notebooks./home/stefan/Documents/aicc-solutions — contains solution notebooks, baselines, and task statements.Find and read all source material for the task:
| Source | Path |
|---|---|
| Task statement | round-{N}/statements/{task-name}.md |
| Solution notebook | round-{N}/{task-name}.ipynb |
| Baseline notebook | round-{N}/baseline/baseline-{task-name}-aicc-round-{N}.ipynb |
Read the statement first to understand the problem, constraints, evaluation metric, and baseline score. Then explore both notebooks using the ipynb tool:
ipynb cells notebook.ipynb # list all cells with type and index
ipynb cat notebook.ipynb N # read cell N source
Read every markdown cell (for author commentary and insights) and every code cell (for implementation details). Compare baseline vs. solution to identify the key improvements — architecture changes, data strategies, training tricks, optimizer choices.
Also check the existing editorial directory for format reference:
src/solutions/round-{N}/
Create the file at src/solutions/round-{N}/{task-slug}.mdx.
Derive the slug from the task name:
lowercase -> strip special chars -> spaces to hyphens -> trim
Structure — Follow a scientific paper format:
| Section | Content |
|---|---|
| Abstract | One-paragraph summary: problem, approach, key innovations, final score vs baseline |
| 1. Introduction | Problem context, constraints, why this task matters |
| 2. Problem Definition | Formal task formulation with LaTeX, evaluation metric, constraints from the statement |
| 3. Data & Tokenization | Dataset, preprocessing, tokenizer design, any special data strategies (chunking, augmentation) |
| 4. Model Architecture | Architecture description with justification for every component choice |
| 5. Training Methodology | Loss, optimizer, schedule, any multi-phase training, curriculum design |
| 6. Inference | How predictions are made at test time, any packing/padding strategies |
| 7. Results | Quantitative table comparing baseline vs solution, ablation reasoning |
| 8. Discussion | Why the approach works, design principle analysis, comparison table |
| 9. Conclusion | Summary of innovations and results, attribution |
Formatting rules:
$...$, display $$...$$```python, ```text
``` without a language — rehype-prism-plus will try to auto-detect and may guess math, which isn't registered in refractor`pack_padded_sequence`| col1 | col2 |) — they render poorly. Always use <MDXTable> insteadReference components directly in MDX — they are provided via <MDXProvider> and <MDXContent components={...}>:
<ModelArchitecture caption="Optional caption explaining the diagram." />
<PhaseTable />
<MDXTable caption="Optional table caption.">
<MDXThead>...</MDXThead>
<MDXTbody>...</MDXTbody>
</MDXTable>
All components are in src/components/solutions/ and exported from src/components/solutions/index.ts.
bun run build
The build must succeed with zero errors. Check that the new chunk appears in dist/assets/autocorrect-*.js.
Then start the dev server and navigate to /solutions/round-{N}/{task-slug} to visually verify. Check for runtime errors in the browser console.
Add a "blog" field to the task entry in src/data/contests.json:
{
"name": "Autocorrect",
"type": "NLP",
"kaggle": "...",
"solution": "...",
"blog": "/solutions/round-1/autocorrect",
"author": "...",
"practiceStatus": "..."
}
Everything must be pure ASCII — no Unicode characters anywhere. Not in prose, not in code blocks, not in component source. Replace:
| Character | Replace with |
|---|---|
Em dash -- | Hyphen - or rephrase the sentence |
En dash - | Hyphen - |
Arrows --> <-- | Text: fwd, bwd, or rephrase |
Subscripts v0 | v0, h0_fwd, etc. |
Superscripts 10^-3 | 4e-3, 1e-3 in code; 4 x 10^-3 in prose with LaTeX $4 \times 10^{-3}$ |
Multiplication sign x | Letter x or LaTeX $\times$ |
Minus sign - | Hyphen - or LaTeX $-$ |
Run a verification pass:
python3 -c "
with open('path/to/file') as f:
for i, line in enumerate(f, 1):
for c in line:
if ord(c) > 127:
print(f'L{i}: U+{ord(c):04X} {c!r}')
"
The AICC brand colors are defined in tailwind.config.ts and index.css:
aicc-purple (#8C00FF) — primary, good for main architectural blocksaicc-orange (#FF6600) — secondary, good for contrasting pathsaicc-violet (#4A008C) — darker purpleaicc-red (#FF3300) — destructive/alert onlyNever use aicc-teal (#00CCFF) — it has poor contrast against white backgrounds in light mode and against dark backgrounds in dark mode. Use these Tailwind colors instead:
sky-* — good for light/accent blocks, high contrast in both modesindigo-* — good for intermediate stages between purple and emeraldemerald-* — good for output/success stagesamber-* — good for secondary paths (alternative to orange)rose-* — good for projection/transformation stagesgray-* — good for input/neutral stagesviolet-* — good for forward-path RNN blocksUse {color}-50 for backgrounds, {color}-400 for borders, {color}-800 for text in light mode, and {color}-200 for text in dark mode. Include explicit dark: variants:
border-sky-400 bg-sky-50 text-sky-800 dark:border-sky-600 dark:bg-sky-950/40 dark:text-sky-200
Every component must have a clear typographic hierarchy. Use these classes consistently:
| Level | Classes |
|---|---|
| Eyebrow label | text-[10px] font-bold uppercase tracking-[0.18em] |
| Section title | text-xs font-bold uppercase tracking-wider |
| Card/box title | text-base font-bold tracking-tight |
| Body text | text-sm leading-relaxed |
| Caption | text-xs text-gray-600 leading-relaxed |
| Monospace label | font-mono text-sm font-bold |
| Monospace value | font-mono text-xs font-bold |
| Metric label | text-[10px] font-semibold uppercase tracking-wider text-gray-500 |
| Metric value | font-mono text-sm font-bold |
The monospace font is Fira Code — it's imported in index.css and configured globally as 'mono': ['Fira Code', 'monospace'] in tailwind.config.ts. Just use the font-mono class.
not-prose on custom component roots to escape Tailwind Typography's stylingmy-10 for vertical spacing between sectionsrounded-xl or rounded-2xl for card/container bordersborder border-gray-200 dark:border-white/10 for containersshadow-sm for subtle elevationbg-white dark:bg-white/5 for card backgroundsAll components live in src/components/solutions/ and are exported from src/components/solutions/index.ts.
Styled wrapper for tabular data. Use with the shadcn-style sub-components.
<MDXTable caption="Results comparison">
<MDXThead>
<MDXTr>
<MDXTh>Column</MDXTh>
<MDXTh align="center">Value</MDXTh>
</MDXTr>
</MDXThead>
<MDXTbody>
<MDXTr highlight="winner">
<MDXTd><strong>Best result</strong></MDXTd>
<MDXTd align="center"><strong>0.036</strong></MDXTd>
</MDXTr>
<MDXTr highlight="loser">
<MDXTd>Baseline</MDXTd>
<MDXTd align="center">0.094</MDXTd>
</MDXTr>
</MDXTbody>
</MDXTable>
Props:
caption?: string — optional figure captionMDXTh / MDXTd — align?: "left" | "center" | "right"MDXTr — highlight?: "winner" | "loser" (green highlight or gray dim)Academic-style vertical flow diagram showing the model's forward pass.
<ModelArchitecture caption="The BiGRU processes characters in both directions, concatenates hidden states, and projects to vocabulary space." />
Props:
caption?: string — optional figure captionThe diagram shows (top to bottom): input characters -> embedding -> bidirectional GRU (two columns: forward / backward) -> concatenation -> linear projection -> argmax decode -> output characters. Each stage has a colored border, dimension annotation, and Lucide icon.
When to use: Any model with a clear data flow (encoder-only, encoder-decoder could be adapted).
Three-card visualization of a multi-phase training curriculum.
<PhaseTable />
No props — edit the PHASES array directly in the component to customize phases. Each phase card shows: accent color, icon, title, objective description, and metrics (input, epochs, LR, batch).
When to use: Solutions that use curriculum learning, progressive training, or multi-stage optimization.
MDX 3 compiles content to a function that reads props.components. Components passed only via <MDXProvider> context are ignored for the top-level MDXContent. You must pass components as both:
<MDXProvider components={mdxComponents}>
<MDXContent components={mdxComponents} />
</MDXProvider>
The provider handles nested MDX content; the prop handles the root content.
math auto-detectionIf you write ``` without a language, rehype-prism-plus auto-detects the language and may guess math, which isn't registered in refractor. Always specify a language: ```python, ```text, etc.
Tokens like <UNK>, <PAD>, <EOS> inside <pre> or fenced code blocks are interpreted as HTML/JSX tags. In plain text outside code blocks, use HTML entities: <UNK>. Inside fenced code blocks (text), the content is literal and safe.
Tailwind Typography's prose class provides minimal table styling. Pipe tables look flat and inconsistent with the design system. Always use <MDXTable> instead.
remarkMath in wrong plugin arrayremarkMath must be in remarkPlugins, not rehypePlugins. If it's in the wrong array, it operates on the wrong AST type and may produce malformed language-math code blocks. The correct vite.config.ts structure is:
mdx({
remarkPlugins: [remarkMath],
rehypePlugins: [
rehypeSlug,
[rehypeAutolinkHeadings, { behavior: 'wrap' }],
rehypeKatex, // KaTeX runs BEFORE Prism
rehypePrism, // Prism runs LAST
]
})
Unicode is everywhere: copy-paste from notebooks, Wikipedia, even typing -- in VS Code auto-converts to --. Run the Python verification script after writing to catch these. The most common offenders: em dashes, arrows, subscripts, superscripts, and multiplication signs.
MDX files with JSX components may be auto-formatted in ways that break the layout. Review the file after any auto-save or format-on-save. Keep the JSX components on their own lines for readability.
Run this checklist:
<MDXTable>, not markdown pipe syntaxaicc-teal colors anywherebun run build succeeds with zero errors"blog" field added to contests.json/solutions/round-{N}/{task-slug}