Agent skill

M05 Type Driven

by fjrevoredo in fjrevoredo/mini-diarium

CRITICAL: Use for type-driven design. An agent skill from fjrevoredo/mini-diarium.

MITAuto-check passed

Install M05 Type Driven

skills CLI
$ npx skills add fjrevoredo/mini-diarium --skill m05-type-driven -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install fjrevoredo/mini-diarium m05-type-driven --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/fjrevoredo/mini-diarium.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/m05-type-driven .claude/skills/m05-type-driven && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
m05-type-driven
GitHub stars
308
Used in
1 other repo
Token cost
~1.1k tokens
SKILL.md length
329 words
Files
1
Skills in repo
41
Repo updated
First seen
Licence
MIT

At a glance

CRITICAL: Use for type-driven design. An agent skill from fjrevoredo/mini-diarium.

  • Works in 3 steps: Can the type encode the constraint? → When is validation possible? → Who needs to know the invariant?
  • Type-driven design
  • SKILL.md covers Core Question, Error → Design Question, Thinking Prompt and Trace Up ↑, plus 6 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

M05 Type Driven is an agent skill from fjrevoredo/mini-diarium. CRITICAL: Use for type-driven design. Triggers: type state, PhantomData, newtype, marker trait, builder pattern, make invalid states unrepresentable, compile-time validation, sealed trait, ZST, 类型状态, 新类型模式, 类型驱动设计

Its SKILL.md is about 1.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: A local-only journal with serious encryption. Free, open source, and never touches the internet. The licence is MIT.

When your agent uses it

  • Type-driven design

Example prompts

  • “/m05-type-driven”

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Can the type encode the constraint?
  2. When is validation possible?
  3. Who needs to know the invariant?

What it can do on your machine

Read from SKILL.md and the folder at commit 75c1286. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are rust).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

M05 Type Driven loads about 1.1k tokens when it runs. Until then it costs about 57 tokens; SKILL.md has 329 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~57
When it runs · the whole SKILL.md, loaded when a task matches
~1.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from fjrevoredo/mini-diarium at commit 75c1286, republished under its MIT licence (© fjrevoredo). 329 words, ~1,112 tokens.

Download SKILL.mdSave it as .claude/skills/m05-type-driven/SKILL.md (or your agent's skills folder).
name
m05-type-driven
description
CRITICAL: Use for type-driven design. Triggers: type state, PhantomData, newtype, marker trait, builder pattern, make invalid states unrepresentable, compile-time validation, sealed trait, ZST, 类型状态, 新类型模式, 类型驱动设计
user-invocable
false

Type-Driven Design

Layer 1: Language Mechanics

Core Question

How can the type system prevent invalid states?

Before reaching for runtime checks:

  • Can the compiler catch this error?
  • Can invalid states be unrepresentable?
  • Can the type encode the invariant?

Error → Design Question

PatternDon't Just SayAsk Instead
Primitive obsession"It's just a string"What does this value represent?
Boolean flags"Add an is_valid flag"Can states be types?
Optional everywhere"Check for None"Is absence really possible?
Validation at runtime"Return Err if invalid"Can we validate at construction?

Thinking Prompt

Before adding runtime validation:

  1. Can the type encode the constraint?

    • Numeric range → bounded types or newtypes
    • Valid states → type state pattern
    • Semantic meaning → newtype
  2. When is validation possible?

    • At construction → validated newtype
    • At state transition → type state
    • Only at runtime → Result with clear error
  3. Who needs to know the invariant?

    • Compiler → type-level encoding
    • API users → clear type signatures
    • Runtime only → documentation

Trace Up ↑

When type design is unclear:

"Need to validate email format"
    ↑ Ask: Is this a domain value object?
    ↑ Check: m09-domain (Email as Value Object)
    ↑ Check: domain-* (validation requirements)
SituationTrace ToQuestion
What types to createm09-domainWhat's the domain model?
State machine designm09-domainWhat are valid transitions?
Marker trait usagem04-zero-costStatic or dynamic dispatch?

Trace Down ↓

From design to implementation:

"Need type-safe wrapper for primitives"
    ↓ Newtype: struct UserId(u64);

"Need compile-time state validation"
    ↓ Type State: Connection<Connected>

"Need to track phantom type parameters"
    ↓ PhantomData: PhantomData<T>

"Need capability markers"
    ↓ Marker Trait: trait Validated {}

"Need gradual construction"
    ↓ Builder: Builder::new().field(x).build()

Quick Reference

PatternPurposeExample
NewtypeType safetystruct UserId(u64);
Type StateState machineConnection<Connected>
PhantomDataVariance/lifetimePhantomData<&'a T>
Marker TraitCapability flagtrait Validated {}
BuilderGradual constructionBuilder::new().name("x").build()
Sealed TraitPrevent external implmod private { pub trait Sealed {} }

Pattern Examples

Newtype
rust
struct Email(String);  // Not just any string

impl Email {
    pub fn new(s: &str) -> Result<Self, ValidationError> {
        // Validate once, trust forever
        validate_email(s)?;
        Ok(Self(s.to_string()))
    }
}
Type State
rust
struct Connection<State>(TcpStream, PhantomData<State>);

struct Disconnected;
struct Connected;
struct Authenticated;

impl Connection<Disconnected> {
    fn connect(self) -> Connection<Connected> { ... }
}

impl Connection<Connected> {
    fn authenticate(self) -> Connection<Authenticated> { ... }
}

Decision Guide

NeedPattern
Type safety for primitivesNewtype
Compile-time state validationType State
Lifetime/variance markersPhantomData
Capability flagsMarker Trait
Gradual constructionBuilder
Closed set of implsSealed Trait
Zero-sized type markerZST struct

Anti-Patterns

Anti-PatternWhy BadBetter
Boolean flags for statesRuntime errorsType state
String for semantic typesNo type safetyNewtype
Option for uninitializedUnclear invariantBuilder
Public fields with invariantsInvariant violationPrivate + validated new()

WhenSee
Domain modelingm09-domain
Trait designm04-zero-cost
Error handling in constructorsm06-error-handling
Anti-patternsm15-anti-pattern

© fjrevoredo, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/m05-type-driven of fjrevoredo/mini-diarium.

Open the folder on GitHubat commit 75c1286

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in fjrevoredo/mini-diarium, which our catalogue first saw on October 7, 2026.

Compare with similar skills

M05 Type Driven next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

M05 Type Driven compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
M05 Type Driven this skillfjrevoredo/mini-diarium3081 repos~1.1kAutomated safety check: PassMIT
Criticism Self CriticismHughYau/qiushi-skill3.8k—~423Automated safety check: PassMIT
Crossframe Criticalsickn33/agentic-awesome-skills47k1 repos~1.3kAutomated safety check: PassMIT
Critical Imagesthedaviddias/Front-End-Checklist74k—~392Automated safety check: PassMIT
CSS Criticalthedaviddias/Front-End-Checklist74k—~441Automated safety check: PassMIT
Critical Request Chainsthedaviddias/Front-End-Checklist74k—~418Automated safety check: PassMIT

Similar skills

  • Criticism Self Criticism

    HughYau/qiushi-skill

    批评与自我批评:在工作完成、阶段验收、收到批评或同类错误反复出现时,对成果和过程做诚实、具体、基于事实的审视,输出可执行的改进项,并处理外来批评而不辩解。触发信号包括 review、复盘、审查、"帮我看看有没有问题"、"你确定吗";任务刚开始或只是单步查询时不触发。

    3.8k GitHub stars~423 tokensUpdated 6 days ago
    Product & Project ManagementAuto-check passed
  • Crossframe Critical

    sickn33/agentic-awesome-skills

    Use only when the user explicitly names crossframe-critical for a Chinese structural critique dossier, article plan, or long-form critical essay.

    47k GitHub starsUsed in 1 repo~1.3k tokens
    Auto-check passed
  • Critical Images

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing image assets, markup, and CDN or build transforms related to Prioritize loading critical images.

    74k GitHub stars~392 tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • CSS Critical

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing stylesheets, component styles, and responsive behavior related to Inline critical CSS for faster rendering.

    74k GitHub stars~441 tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Critical Request Chains

    thedaviddias/Front-End-Checklist

    A skill your agent uses when auditing slow page loads, heavy assets, or rendering delays related to Minimize critical request chains.

    74k GitHub stars~418 tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Optimize and verify latency-sensitive systems — realtime dashboards, market data feeds, streaming agents, execution gateways, queues, and caches — by tracking p50/p95/p99 latency, freshness age, and…

    274k GitHub starsUsed in 1 repo~624 tokens
    Business, Finance & HRAuto-check passed

More from fjrevoredo/mini-diarium

All 41 skills in this repo
  • Manual Planning

    fjrevoredo/mini-diarium

    Create, update, review, and execute manual Markdown implementation plans when harness planning mode is not being used.

    308 GitHub stars~3.7k tokensUpdated 3 days ago
    Auto-check passed
  • M10 Performance

    fjrevoredo/mini-diarium

    CRITICAL: Use for performance optimization. An agent skill from fjrevoredo/mini-diarium.

    308 GitHub starsUsed in 2 repos~1k tokens
    Auto-check passed
  • Solidjs

    fjrevoredo/mini-diarium

    SolidJS framework development skill for building reactive web applications with fine-grained reactivity.

    308 GitHub stars~2.6k tokensUpdated 3 days ago
    Auto-check passed
  • Rust Symbol Analyzer

    fjrevoredo/mini-diarium

    Analyze Rust project structure using LSP symbols. An agent skill from fjrevoredo/mini-diarium.

    308 GitHub starsUsed in 2 repos~1.2k tokens
    Auto-check passed
  • Tauri V2

    fjrevoredo/mini-diarium

    Tauri v2 cross-platform app development with Rust backend. An agent skill from fjrevoredo/mini-diarium.

    308 GitHub stars~2.5k tokensUpdated 3 days ago
    Auto-check passed
  • Exploration Mode

    fjrevoredo/mini-diarium

    Enter exploration mode: a thinking partner for researching and thinking through ideas and problems before implementation.

    308 GitHub stars~3.4k tokensUpdated 3 days ago
    Auto-check passed

Questions about M05 Type Driven

What does M05 Type Driven do?

CRITICAL: Use for type-driven design. An agent skill from fjrevoredo/mini-diarium. M05 Type Driven is an agent skill from fjrevoredo/mini-diarium. CRITICAL: Use for type-driven design.

When should I use M05 Type Driven?

M05 Type Driven fits situations like: type-driven design.

How do I install M05 Type Driven in Claude Code?

Run `npx skills add fjrevoredo/mini-diarium --skill m05-type-driven -a claude-code`. Or copy the skill folder (.agents/skills/m05-type-driven in fjrevoredo/mini-diarium) into .claude/skills/m05-type-driven in your project. Claude Code loads it when a task matches its description.

How do I install M05 Type Driven in Codex?

Run `npx skills add fjrevoredo/mini-diarium --skill m05-type-driven -a codex`. Or copy the skill folder (.agents/skills/m05-type-driven in fjrevoredo/mini-diarium) into .agents/skills/m05-type-driven in your project. Codex loads it when a task matches its description.

Can I use M05 Type Driven in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add fjrevoredo/mini-diarium --skill m05-type-driven -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/m05-type-driven, .gemini/skills/m05-type-driven, .github/skills/m05-type-driven and .opencode/skills/m05-type-driven in your project.

What does M05 Type Driven need to run?

SKILL.md names no scripts, command-line tools or credentials: M05 Type Driven is instructions for the agent only.

Does M05 Type Driven access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is M05 Type Driven safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does M05 Type Driven use?

M05 Type Driven is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does M05 Type Driven use?

About 1.1k tokens (SKILL.md is roughly 4.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to M05 Type Driven?

Skills that share tags, products or a category with M05 Type Driven: Criticism Self Criticism (HughYau/qiushi-skill, 3.8k stars), Crossframe Critical (sickn33/agentic-awesome-skills, 47k stars), Critical Images (thedaviddias/Front-End-Checklist, 74k stars) and CSS Critical (thedaviddias/Front-End-Checklist, 74k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains M05 Type Driven?

fjrevoredo (a GitHub user) maintains it in fjrevoredo/mini-diarium, which has 308 GitHub stars. The repository holds 41 skills in this directory. The repository was last updated on October 4, 2026.

Source: fjrevoredo/mini-diarium on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.