Token导航 LogoToken导航TokenDH.com
开发执行命令github未标认证来源可访问许可证需确认审计通过

sniffable-pythonsniffable Python 测试

Agent Skill

用于辅助 Python 项目开发、测试、依赖管理和常见框架工作流。它适合让 Agent 阅读 Python 代码、定位测试问题、整理运行命令、生成脚本或分析数据处理逻辑。使用时需要确认项目虚拟环境、依赖版本和测试入口;涉及执行脚本、读写文件、访问数据库或调用外部 API 时,应先明确运行目录和输入输出范围,避免误改生产数据。

总安装

264

周安装

11

GitHub Stars

37

下载量

88
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:sniffable-python(sniffable Python 测试)
来源仓库:https://github.com/simhacker/moollm
仓库路径:skills/sniffable-python
安装命令:
npx skills add https://github.com/simhacker/moollm --skill sniffable-python
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/simhacker/moollm --skill sniffable-python

简介

sniffable-python 用于辅助 Python 项目开发、测试、依赖管理和常见框架工作流,适合处理 Python 代码和测试问题。

  • 它能阅读 Python 代码、定位测试问题、整理运行命令,提升开发效率。
  • 安装命令为 npx skills add https://github.com/simhacker/moollm --skill sniffable-python,建议结合虚拟环境和依赖版本使用。
  • 使用时需确认运行目录和输入输出范围,避免误改生产数据;涉及脚本执行时应先明确权限边界。
  • 该技能适用于开发类任务,需配合 Codex、Claude、Cursor、Gemini CLI 使用。

SKILL.md

Sniffable Python

"Structure code for the first 50 lines. That's all the LLM needs."

Don't invent new syntax — structure existing syntax for optimal LLM comprehension.

*If your code smells good, the LLM can sniff it from the first whiff.*

*Steve Jobs wanted pixels you could lick. We want code you can sniff.*


The Problem

LLMs can read Python. But:

  • Large files overwhelm context
  • Implementation details bury the API
  • Comments scattered or missing
  • No clear entry point for understanding

Solution: Structure Python so the first ~50 lines contain everything needed to understand and use the tool. Make your code's bouquet apparent from the opening notes.


The Pattern

Canonical Structure

#!/usr/bin/env python3
"""skill-name: Brief description of what the script does.

This docstring becomes --help output AND is immediately visible to the LLM.
It should contain:
- Purpose (one sentence)
- Usage examples
- Key behaviors

Usage:
    python script.py command [options]

Examples:
    python script.py move north --quiet
    python script.py examine sword --verbose
"""

import argparse
from pathlib import Path
import yaml

# Configuration
DEFAULT_ROOM = "start"
VALID_DIRECTIONS = ["north", "south", "east", "west"]
MAX_INVENTORY = 10

def main():
    """Main entry point — CLI structure only, no implementation."""
    parser = argparse.ArgumentParser(
        description=__doc__.split('\n')[0],  # First line of module docstring
        formatter_class=argparse.RawDescriptionHelpFormatter
    )
    subparsers = parser.add_subparsers(dest="command", required=True)

    # move command
    move_parser = subparsers.add_parser("move", help="Move in a direction")
    move_parser.add_argument("direction", choices=VALID_DIRECTIONS,
                             help="Direction to move")
    move_parser.add_argument("--quiet", "-q", action="store_true",
                             help="Suppress output")

    # examine command
    examine_parser = subparsers.add_parser("examine", help="Look at something")
    examine_parser.add_argument("target", help="What to examine")
    examine_parser.add_argument("--verbose", "-v", action="store_true",
                                help="Show details")

    # status command
    status_parser = subparsers.add_parser("status", help="Show game state")
    status_parser.add_argument("--verbose", "-v", action="store_true",
                               help="Show details")

    args = parser.parse_args()
    _dispatch(args)

# Implementation (LLM only reads past here if modifying behavior)

def _dispatch(args):
    """Route to appropriate handler."""
    if args.command == "move":
        _do_move(args.direction, args.quiet)
    elif args.command == "examine":
        _do_examine(args.target, args.verbose)
    elif args.command == "status":
        _show_status(args.verbose)

def _do_move(direction: str, quiet: bool) -> None:
    """Internal: Execute movement."""
    ...

def _do_examine(target: str, verbose: bool) -> None:
    """Internal: Examine an object."""
    ...

def _show_status(verbose: bool) -> None:
    """Internal: Display status."""
    ...

if __name__ == "__main__":
    main()

The Zones

ZoneLinesPurpose
Shebang + Docstring1-15Purpose, usage, becomes --help
Imports16-22Dependencies visible at a glance
Constants23-30Configuration, valid values, limits
CLI Structure31-50Command tree with types and docs
Implementation51+Only read if modifying

Why This Works

Dual-Audience Design

# One file, two audiences, same source of truth
dual_audience:
  source: "Python file (sniffable)"
  audiences:
    human:
      entry_point: "--help"
      sees: "CLI usage, arguments, examples"
    llm:
      entry_point: "first 50 lines"
      sees: "docstring, imports, constants, CLI tree"
  convergence: "Same source of truth — no duplication, no drift"

DRY Principle

The CLI decorators ARE the documentation:

@click.option('--verbose', '-v', is_flag=True, help='Show details')

This single line defines:

  • The flag name (--verbose)
  • The short form (-v)
  • The type (boolean flag)
  • The help text
  • The Python parameter name and type

No duplication. No drift. One source.


Why Syntax Compression Fails

Some argue for compressing syntax to save tokens — dense symbols, sigils, minimal keywords. This is the wrong optimization.

Perl is the cautionary tale. Its obsessive fetish for compact syntax, sigils, punctuation, and performative TMTOWTDI one-liners — to the point of looking like line noise — is exactly why it's no longer relevant for LLM comprehension and generation.

ApproachTokensComprehensionTraining Data
Dense novel syntaxFewerLow (unfamiliar)Minimal
Sniffable PythonMoreHigh (known syntax)Billions

The LLM already knows Python cold. Teaching it a novel syntax costs millions of tokens per context window (docs, examples, corrections) — and that cost is paid every single prompt, because prompting is not training. LLMs have no memory. Sniffable Python costs zero tokens to teach — the LLM just reads code it understands deeply from massive pre-training.

The Symbol Collision Problem

Short symbols cause semantic collisions. When @ appears, it activates Python decorators, shell patterns, email addresses, and more — simultaneously. The model has to do disambiguation work that wouldn't exist with unambiguous keywords. That disambiguation costs compute and introduces error modes.

Comprehension Fidelity > Token Count

You're not optimizing for token count. You're optimizing for how well the LLM understands your code.

Dense punctuation is anti-optimized for how transformers tokenize and reason. Verbose, well-structured code with semantic comments actually compresses better in the LLM's internal representations.


Comments as YAML Jazz

Apply YAML-JAZZ principles to Python comments:

# CONSTANTS
TIMEOUT = 30        # generous — API is flaky on Mondays
MAX_RETRIES = 3     # based on observed failure patterns in prod
BATCH_SIZE = 100    # memory-safe for 8GB instances

# TODO: Add circuit breaker after next major outage
# FIXME: Rate limiting not yet implemented
# NOTE: This duplicates logic in api_client.py — consider extracting

These comments ARE data. The LLM reads them. Acts on them. Uses them to understand *why*, not just *what*.


Comments: Substance Over Decoration

Don't waste tokens on decorative separators:

# BAD: Decorative separators (long = or - lines add no meaning)
# GOOD: Plain and functional
# Imports
import argparse

Don't trim Christmas trees:

Avoid ASCII art or box-drawing in comments. Use plain section comments instead:

# Configuration
TIMEOUT = 30  # generous — API flaky on Mondays

Do include useful semantic comments:

# ✓ GOOD: Explains WHY
TIMEOUT = 30        # generous — API flaky on Mondays
MAX_RETRIES = 3     # based on observed failure patterns
BATCH_SIZE = 100    # memory-safe for 8GB instances

# ✓ GOOD: Documents intent
# TODO: Add circuit breaker after next outage
# NOTE: Duplicates logic in api_client.py — consider extracting

The rule: Every comment token should carry meaning. If it's just decoration, delete it.


Argparse vs Click vs Typer

Argparse is preferred for sniffable Python because it separates structure from implementation:

FeatureArgparseClickTyper
Structure/impl separation✓ Clean✗ Mixed✗ Mixed
Top-down tree order
Built-in (no deps)
Training dataAbundantAbundantGrowing
LLM familiarityHighestHighMedium

The Argparse Advantage

With Click/Typer, decorators attach to functions — so CLI structure is interleaved with implementation:

# Click: structure mixed with implementation
@cli.command()
def examine(target: str):  # ← implementation starts here
    """Look at something."""
    do_stuff()  # ← can't sniff without reading this

With argparse, main() contains the entire CLI tree with no implementation:

# Argparse: clean separation
def main():
    """CLI structure only — no implementation."""
    parser = argparse.ArgumentParser(description="Tool description")
    subparsers = parser.add_subparsers(dest="command")

    # examine command
    examine_parser = subparsers.add_parser("examine", help="Look at something")
    examine_parser.add_argument("target", help="What to examine")
    examine_parser.add_argument("--verbose", "-v", action="store_true")

    # move command
    move_parser = subparsers.add_parser("move", help="Move in a direction")
    move_parser.add_argument("direction", choices=VALID_DIRECTIONS)

    args = parser.parse_args()
    _dispatch(args)  # ← implementation is ELSEWHERE

# IMPLEMENTATION (completely separate, below the fold)
def _dispatch(args):
    ...

The LLM reads main() and sees the entire command tree — arguments, types, choices, help text — without any implementation noise. Pure sniffability. No need to hold your nose.


Integration with Sister Scripts

Sniffable Python is how sister scripts should be structured:

skill/
├── SKILL.md           # Tells LLM how to generate scripts
├── CARD.yml           # Interface definition
└── scripts/
    └── helper.py      # Sniffable Python

When the skill/SKILL.md instructs the LLM to generate a sister script, it should follow sniffable-python conventions:

  1. Docstring with usage at top, no decorations
  2. Imports grouped and labeled
  3. Constants with explanatory comments
  4. CLI structure before implementation
  5. Implementation below the fold

Directory-Agnostic Invocation

Critical pattern: All scripts — including sniffable Python — must work when invoked from ANY directory. Scripts find their skill context using __file__, not os.getcwd().

For bash scripts, see sister-script/ for the equivalent pattern.

The Pattern

from pathlib import Path

# Find THIS script's location (not the caller's cwd)
SCRIPT_DIR = Path(__file__).resolve().parent
SKILL_DIR = SCRIPT_DIR.parent  # If script is in skill/scripts/

# Now find sibling files relative to script location
CONFIG_FILE = SKILL_DIR / "config.yml"
PATTERNS_DIR = SKILL_DIR / "patterns"
TEMPLATES_DIR = SKILL_DIR / "templates"

Why __file__?

  • Path(__file__) — path to THIS script file
  • .resolve() — resolve symlinks to get real location
  • .parent — containing directory

Why NOT os.getcwd()?

  • os.getcwd() returns the CALLER's directory
  • Script invoked from /home/user/ won't find skills/foo/patterns/

The Complete Template

#!/usr/bin/env python3
"""sister-tool: Brief description.

Usage:
    python3 skills/my-skill/scripts/sister-tool.py command [options]

Can be invoked from any directory — finds its own context.
"""

from pathlib import Path
import argparse
import yaml

# DIRECTORY CONTEXT
# Find script location regardless of caller's cwd
SCRIPT_DIR = Path(__file__).resolve().parent
SKILL_DIR = SCRIPT_DIR.parent  # scripts/ is one level down from skill/

# Skill-relative paths
CARD_FILE = SKILL_DIR / "CARD.yml"
PATTERNS_DIR = SKILL_DIR / "patterns"
TEMPLATES_DIR = SKILL_DIR / "templates"
CONFIG_DIR = SKILL_DIR / ".moollm" / "skills" / SKILL_DIR.name

# CONFIGURATION
def load_card():
    """Load skill's CARD.yml for metadata."""
    if CARD_FILE.exists():
        return yaml.safe_load(CARD_FILE.read_text())
    return {}

def main():
    """CLI structure — sniffable, directory-agnostic."""
    card = load_card()
    parser = argparse.ArgumentParser(
        description=card.get("description", __doc__.split('\n')[0])
    )
    # ... CLI structure ...
    args = parser.parse_args()
    _dispatch(args)

# IMPLEMENTATION
def _dispatch(args):
    ...

if __name__ == "__main__":
    main()

Why This Matters

Invocationos.getcwd()Path(__file__).parent
cd skills/foo && python scripts/bar.pyskills/foo/skills/foo/scripts/
python skills/foo/scripts/bar.py/home/user/skills/foo/scripts/
cd / && python /path/to/skills/foo/scripts/bar.py/skills/foo/scripts/

Path(__file__).parent always works. The script finds its own context.


The Play-Learn-Lift Connection

Sniffable Python is the crystallization point of LIFT — where proven procedures become reusable automation.

# PLAY → LEARN → LIFT progression
play_learn_lift:
  play:
    emoji: "🎮"
    action: "Jump in! Try things"
    artifact: "session-log.md"
    quality: "Messy exploration, may fail"
  learn:
    emoji: "📚"
    action: "Patterns emerge, document procedures"
    artifact: "PROCEDURE.md"
    quality: "Structured notes, works when followed"
  lift:
    emoji: "🚀"
    action: "Automate it! Share the tool"
    artifact: "sister-script.py (SNIFFABLE PYTHON)"
    quality: "Clean interface, others can use"

The LIFT stage produces sniffable Python because:

  • Others (human and LLM) need to understand the tool quickly
  • The CLI must be discoverable without reading implementation
  • The script must be maintainable without spelunking

See: play-learn-lift/ — The full methodology


The Skill-to-Script Flow

The skill/ skill describes how skills act as factories that produce instances. When a skill generates a CLI tool, that tool should be sniffable Python.

# Skill → Script → LLM → Output pipeline
skill_to_script_flow:
  - stage: "SKILL.md"
    role: "The teacher — knows how to build things"
    action: "instructs LLM to generate"
  - stage: "Sister Script"
    role: "SNIFFABLE PYTHON"
    properties:
      - "Docstring = API"
      - "main() = CLI tree"
      - "Comments = Jazz"
    action: "LLM sniffs to understand"
  - stage: "LLM Comprehension"
    role: "Reads first 50 lines, understands CLI, can invoke tool"
    action: "executes"
  - stage: "Structured Output"
    role: "YAML / JSON — LLM can parse, feeds back"

Example from adventure skill:

The adventure skill's vision includes a Python CLI that handles deterministic operations:

$ adventure lint examples/adventure-4/    # Validate world
$ adventure move alice north              # Update coordinates
$ adventure scan --pending                # Find work to do

Each of these is a sniffable subcommand. The LLM sniffs adventure --help (or just reads main()) and knows the full API.


The Adventure Linter Feedback Loop

The adventure/ skill demonstrates sniffable Python in a feedback loop:

# Adventure linter feedback loop
linter_feedback_loop:
  - step: "LLM generates content"
    does: "Create rooms, objects, characters in YAML Jazz format"
  - step: "Sniffable linter runs"
    does: "adventure-lint.py validates world consistency"
  - step: "LINTER.yml output"
    does: "Structured findings: errors, warnings, suggestions"
  - step: "LLM reads lint results"
    does: "Understands what needs fixing, generates corrections"
  - step: "iterate"
    does: "Loop back to generation with fixes"

From examples/adventure-4/LINTER.yml:

summary:
  rooms_found: 36
  objects_found: 37
  characters_found: 6
  errors: 8
  warnings: 36
  compile_requests: 9

events:
- type: FOUND_ROOM
  severity: INFO
  path: pub/ROOM.yml
  message: 'Found room: The Gezelligheid Grotto'
  data:
    exits: [NORTH, UP, BACK]
    objects: 15
    sub_rooms: 1

Why this works:

  • The linter is sniffable — LLM understands its CLI
  • The output is YAML — LLM parses it naturally
  • Events are structured — LLM knows what to fix
  • The loop is tight — generate → lint → fix → repeat

This is Python for precision, LLM for poetry.


Live Examples in adventure-4

TomTomagotchi — YAML Jazz in Action

kitchen/tomtomagotchi.yml demonstrates sniffable structure in YAML:

abilities:
  COMPASS:
    description: "Point toward a target"
    usage: "COMPASS [target]"
    targets:
      - start     # Always knows home
      - home      # The surface
      - treasure  # The goal

The comment "Always knows home" is data. The LLM reads it and understands the semantics. This is YAML Jazz applied to game objects.

The Pub — Framing Through Comments

pub/ROOM.yml uses comments to frame the room's purpose:

framing:
  mode: [performance, celebration, socialization, tribute, third_place]

  description: |
    This is a PLACE OF PERFORMANCE AND CELEBRATION.
    This is a THIRD PLACE — neither home nor work, but community.
    This is where TRIBUTES are performed with love.

Comments explain WHY the pub exists. The LLM uses this framing to generate appropriate content — debates are sport, personas are welcome, tributes are loving.

Skills as Rooms

From skill/SKILL.md, skills manifest as rooms you can enter:

> enter the adventure skill
You are in the Adventure Workshop.
Exits: pub, maze, character-gallery
Objects: room-templates, npc-catalog, puzzle-designs

The skill directory IS the room. The sister scripts are objects you can pick up and use. Sniffable Python makes those scripts discoverable.


The Coherence Engine Flow

# Coherence Engine: user request → LLM discovery → execution
coherence_flow:
  trigger: "Run the room builder for the kitchen"
  steps:
    - action: "LLM reads skill/SKILL.md"
      discovers: "scripts/room-builder"
    - action: "LLM sniffs room-builder.py (first 50 lines)"
      sees:
        docstring: "Creates rooms..."
        commands: [create, modify, list]
        options: [--template, --force]
    - action: "LLM understands API, generates command"
      output: "room-builder create --template kitchen"

The LLM discovers the tool's capabilities by reading its structure, not by loading documentation. One quick sniff and it knows what's cooking.


Checklist

When writing sniffable Python:

  • Shebang on line 1
  • Module docstring with purpose, usage, examples
  • Imports grouped at top (no decorative markers)
  • Constants with explanatory comments
  • CLI structure in main() using argparse (preferred) or Click/Typer
  • Each command has a docstring
  • Types specified in function signatures
  • Implementation below line 50
  • Internal functions prefixed with _
  • if __name__ == "__main__": at bottom

Anti-Patterns (Code Smells You Can't Unsmell)

Implementation before CLI

def _helper():
    ...
def _another_helper():
    ...
# 200 lines later...
@click.command()
def main():
    ...

No docstrings

@click.command()
def process(x, y, z):
    # What does this do? What are x, y, z?

Magic constants

if retries > 3:  # Why 3? What happens at 4?

Scattered imports

import os
def foo():
    import json  # Hidden dependency

Commands

CommandAction
SNIFF [file]Read and summarize a Python file's API
SNIFF CODE [file]Language-agnostic review for sniffability
GENERATE-SNIFFABLE [name]Create new sniffable script from template
VALIDATE-SNIFFABLE [file]Check if file follows conventions

SNIFF CODE — Works on Any Language

The SNIFF CODE command isn't Python-specific. It reviews any source file:

> SNIFF CODE src/api/handler.ts

Sniffability Report for handler.ts:
✓ Purpose clear from first 10 lines
✓ Exports/API visible before implementation
✗ Magic number on line 47 — needs comment
✗ Helper function before main export — reorder
✓ Semantic comments explain WHY not WHAT

Overall: Mostly fresh, minor reordering needed

What it checks:

AspectQuestion
PurposeCan you understand what this does in 10 lines?
API-firstAre exports/interfaces/main before helpers?
CommentsDo comments explain WHY, not just WHAT?
No decorationAre comments semantic, not decorative cruft?
ConstantsDo magic values have explanatory comments?
DependenciesAre imports/requires visible at top?

Good for humans. Good for LLMs. Same conventions.


Protocol Symbol

SNIFFABLE-PYTHON

Invoke when: Generating or reading Python scripts that need to be LLM-comprehensible.


Dovetails With — The Intertwingularity

Everything in MOOLLM connects. Sniffable Python sits at the intersection of multiple skills:

# How sniffable-python connects to other skills
skill_connections:
  parent: "constructionism (build to learn)"
  center: "sniffable-python"
  peers:
    - skill: "play-learn-lift"
      relation: "LIFT stage produces sniffable Python"
    - skill: "yaml-jazz"
      relation: "Comments carry semantic meaning"
  children:
    - skill: "sister-script"
      relation: "Sister scripts ARE sniffable Python"
    - skill: "skill"
      relation: "Skills generate sniffable scripts"
    - skill: "adventure"
      relation: "Linter exemplifies the feedback loop"
SkillRelationship to Sniffable Python
sister-script/Sister scripts ARE sniffable Python
skill/Skills generate sniffable scripts
yaml-jazz/Comments carry semantic meaning
play-learn-lift/Sniffable Python is LIFT output
constructionism/Build inspectable things
adventure/Linter exemplifies the feedback loop
session-log/Raw exploration → procedures → scripts
research-notebook/Documented patterns become scripts

Live Examples

ExampleLocationWhat It Shows
Adventure-4 Worldexamples/adventure-4/Complete world with linter-driven generation
TomTomagotchikitchen/tomtomagotchi.ymlYAML Jazz: abilities documented with usage examples
The Pubpub/ROOM.ymlSemantic comments as framing protocol
The Linter OutputLINTER.ymlStructured output the LLM can parse
Skill as Roomskill/SKILL.mdSkills manifest as explorable spaces

The Circle Completes

PLAY: Try things, log them
  ↓
LEARN: Document patterns in PROCEDURE.md
  ↓
LIFT: Generate sister-script.py in SNIFFABLE PYTHON format
  ↓
SKILL: Add to skill, expose to LLM
  ↓
LLM: Sniffs script, understands API, uses tool
  ↓
OUTPUT: YAML results (linter, builder, etc.)
  ↓
PLAY: Try new things with the tool...
  ↓
[repeat]

This is the MOOLLM development loop. Sniffable Python is the code interface that makes it work.


Beyond Python: Universal Sniffability

While this skill focuses on Python, the principles are language-agnostic:

LanguageSniffable Structure
TypeScriptExports at top, types before implementation, JSDoc on public API
GoPackage doc, exported functions first, internal helpers below
RustModule doc, pub items at top, private impl below
JavaClass Javadoc, public methods before private
BashUsage comment at top, main at top, functions below

The universal rule: Whatever a reader (human or LLM) needs to *use* the code should be visible before whatever they need to *modify* it.

// ✓ Sniffable TypeScript
/**
 * User authentication service.
 * @module auth
 */

export interface AuthConfig { ... }
export function authenticate(config: AuthConfig): Promise<User> { ... }
export function logout(): void { ... }

// Implementation details below
function validateToken(token: string): boolean { ... }

Same smell test, any language: Can you understand what this code offers by reading just the head?


Lickable Pixels, Sniffable Code

When Steve Jobs unveiled Mac OS X's Aqua interface in 2000, he said:

*"We made the buttons on the screen look so good you'll want to lick them."*

Jobs understood that interfaces aren't just functional — they should be sensually inviting. The translucent droplets, the pulsing default buttons, the candy-colored icons — these weren't decoration. They were signals of quality that drew users in.

Programming languages are user interfaces. The users are humans and LLMs. And just as lickable pixels invite visual exploration, sniffable code invites structural exploration.

Lickable Pixels (UI)Sniffable Code
Visually invitingStructurally inviting
Draws the eye to affordancesDraws the reader to the API
Beauty signals qualityClarity signals quality
Users want to clickReaders want to use
First impression mattersFirst 50 lines matter

Jobs didn't make Aqua pretty at the expense of function — the visual design *reinforced* usability. Sniffable code works the same way: the structural clarity that helps LLMs also helps humans. We're not optimizing for machines at human expense. We're optimizing for comprehension, and both benefit.

*Perl looks like line noise. Sniffable Python looks like an invitation.*


The Thesis

The "ideal LLM syntax" question has the wrong framing.

You don't need new syntax. You need structured familiar syntax.

  • Languages LLMs know (Python, TypeScript, Go, Rust...)
  • Structured for sniffability (important stuff at top)
  • Comments as data (YAML Jazz applied to any language)
  • Single source of truth (the code IS the spec)

Dense syntax compresses the wrong thing. Sniffable code structures the right thing.

*Jobs made you want to lick the screen. We want you to sniff the source.*


*"The LLM doesn't need fewer tokens of unfamiliar syntax. It needs familiar syntax, structured for fast comprehension."*

*Good code doesn't just avoid bad smells — it has an aroma that draws you in from the header.*

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

35.4%
按下载量换算31

Claude

29.49%
按下载量换算26

Cursor

17.47%
按下载量换算15

Gemini CLI

9.35%
按下载量换算8

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

执行命令

安装流程涉及命令执行,可能通过 npx skills add https://github.com/simhacker/moollm --skill sniffable-python 联网下载 Skill 或依赖。用户安装前应确认命令来源、仓库内容和执行环境。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills