agentleFS
yanggujunyanggujun/open-axle/skills/file-reader/SKILL.md

file-reader

Skill0 starsChanged 2 months agoMITView on GitHub

This skill enables the LLM to read files from disk by understanding the user's intent and producing a strictly-formatted JSON output that describes what file to read. The JSON output can then be parsed by the file_reader_execute skill to actually read the file from disk. Invoke this skill whenever the user's request implies reading, viewing, opening, loading, inspecting, or examining a file. Look for phrases such as: The skill also applies whenever the AI itself needs the content of a…

  • Reads credentials

1 other project uses a version of this.

Adopted by

Most recently taken up by

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 1

    1. FishRaposo/aria-agent★ 0same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository14 other files it gives its agents.

The file

We split this skill into the rules it gives an agent

4 rules. About 0 are common, 2 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    When the skill is triggered, the LLM must:

    line 32
  2. Very specific:

    All string values must properly escape special characters (", \, newline as \n, tab as \t).

    line 106
  3. Distinctive:

    Do NOT wrap the JSON in additional Markdown fences.

    line 107
  4. Very specific:

    Do NOT emit multiple file-reader blocks in a single response.

    line 108

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

📖 File Reader Skill

Overview

This skill enables the LLM to read files from disk by understanding the user's intent and producing a strictly-formatted JSON output that describes what file to read. The JSON output can then be parsed by the file_reader_execute skill to actually read the file from disk.

Skill Name

file-reader

When to Use This Skill

Invoke this skill whenever the user's request implies reading, viewing, opening, loading, inspecting, or examining a file. Look for phrases such as:

  • "read the file ..."
  • "open ..."
  • "show me the content of ..."
  • "view ..."
  • "load ..."
  • "what's inside ..."
  • "print/display the contents of ..."
  • "look at ..."
  • "check ..."
  • "inspect ..."

The skill also applies whenever the AI itself needs the content of a file to accomplish a task the user asked for (e.g., "summarize notes.txt", "fix the bug in main.py", "translate hello.md"). In such cases, the AI should first emit a file-reader JSON payload to fetch the file's content.

The skill applies to any file type: source code (.py, .js, .java, .ts, .go, .c, .cpp, ...), config (.json, .yaml, .toml, .ini, .env), markup (.md, .html, .xml), plain text (.txt, .log), and more.

What the LLM Must Do

When the skill is triggered, the LLM must:

  1. Extract the following from the user's request (asking clarifying questions only if truly ambiguous):
    • action (required): must be read_file
    • file_path (required): The path to the file to read (relative or absolute). If the user does not specify a directory, default to the current working directory ./.
    • filename (required): The file name including extension. Can be embedded inside file_path.
    • encoding (optional): Defaults to utf-8 if not specified.
    • max_bytes (optional): Maximum number of bytes to read. 0 or omitted means read the entire file.
    • start_line (optional): 1-based line to start reading from. Defaults to 1.
    • end_line (optional): 1-based inclusive last line to read. 0 or omitted means read to end of file.
    • description (optional): One-line summary of why the file is being read.
    • sequential (optional): when it is presented, it indicates the LLM needs the file content as an input to do further tasks.
    • prompt (optional): when sequential is presented, the prompt is used to ask AI to do follow up tasks. When there are multiple files to read, the next prompt should contains all the files and specify which file should be read in the next prompt. The prompt should contain all of following tasks.
  2. Produce a response containing pure JSON that STRICTLY follows the schema below. No other JSON blocks in the reply.

Required JSON Output Schema

The LLM's response MUST contain exactly pure JSON format string with no code blocks starting with "```".

{
  "action": "read_file",
  "thinking": "<ai-thinking-trace>",
  "sequential": {
    "prompt": "<the prompt required for the conversation to continue>"
  }
  "properties": [
    {
      "name": "filePath",
      "value": "<directory-or-full-path>"
    },
    {
      "name": "fileName",
      "value": "<name-with-extension>"
    },
    {
      "name": "encoding",
      "value": "utf-8"
    },
    {
      "name": "maxBytes",
      "value": "0"
    },
    {
      "name": "startLine",
      "value": "1"
    },
    {
      "name": "endLine",
      "value": "0"
    }
  ]
}

Field Rules

FieldTypeRequiredNotes
actionstringYesMust be exactly "read_file".
sequentialobjectNoif the file content is needed to be input for ai for further tasks.
promptstringNothe prompt used as input for LLM for all of following tasks.
filePathstringYesDirectory portion OR full path. Use "./" if unspecified.
fileNamestringYesFilename including extension. Omit if filePath already includes it.
encodingstringNoDefault utf-8.
maxBytesstringNoNumeric string. "0" = unlimited. Default "0".
startLinestringNo1-based line. Default "1".
endLinestringNo1-based inclusive line. "0" = end of file. Default "0".
descriptionstringNoHuman-readable reason for reading.

Formatting Requirements

  • The JSON block must be valid JSON (parseable by json.loads).
  • All string values must properly escape special characters (", \, newline as \n, tab as \t).
  • Do NOT wrap the JSON in additional Markdown fences.
  • Do NOT emit multiple file-reader blocks in a single response.

Response Pattern for the LLM

A typical assistant reply should look like the following, with no other output. The response should be in pure JSON format.

{ "action": "read_file", "thinking": "User asked to view README.md; using default encoding utf-8 and reading whole file.", "properties": [ { "name": "filePath", "value": "./" }, { "name": "fileName", "value": "README.md" }, { "name": "encoding", "value": "utf-8" }, { "name": "maxBytes", "value": "0" }, { "name": "startLine", "value": "1" }, { "name": "endLine", "value": "0" }, { "name": "description", "value": "Show the project README" } ] }

Decision Logic

User Prompt
    |
    +-- Does the request imply reading/viewing/loading an existing file,
    |   OR does the AI need the file's content to answer the request?
    |     |
    |     +-- YES --> Extract path/name --> Emit ONE `file-reader` JSON block
    |     |
    |     +-- NO  --> Do not use this skill

Examples

Example 1: Explicit path

User: "Read the file config/app.json." and analyze the content

LLM emits:

{
  "action": "read_file",
  "thinking": "User explicitly asked to read config/app.json.",
  "sequential": {
    "prompt": "The file content is provided below, please analyze the content:"
  },
  "properties": [
    { "name": "filePath", "value": "config/" },
    { "name": "fileName", "value": "app.json" },
    { "name": "encoding", "value": "utf-8" },
    { "name": "maxBytes", "value": "0" },
    { "name": "startLine", "value": "1" },
    { "name": "endLine", "value": "0" },
    { "name": "description", "value": "Read application configuration" }
  ]
}

Example 2: Implicit read to accomplish a task

User: "Summarize what's in notes.txt."

LLM emits:

{
  "action": "read_file",
  "thinking": "To summarize notes.txt I first need its content; emit a read_file payload.",
  "sequential": {
    "prompt": "Following is the file content. <note: no need to put the content here>"
  },
  "properties": [
    { "name": "filePath", "value": "./" },
    { "name": "fileName", "value": "notes.txt" },
    { "name": "encoding", "value": "utf-8" },
    { "name": "maxBytes", "value": "0" },
    { "name": "startLine", "value": "1" },
    { "name": "endLine", "value": "0" },
    { "name": "description", "value": "Load notes.txt for summarization" }
  ]
}

Example 3: Partial read (line range)

User: "Show me lines 10 to 40 of main.py."

LLM emits:

{
  "action": "read_file",
  "thinking": "User wants a specific line range from main.py.",
  "properties": [
    { "name": "filePath", "value": "./" },
    { "name": "fileName", "value": "main.py" },
    { "name": "encoding", "value": "utf-8" },
    { "name": "maxBytes", "value": "0" },
    { "name": "startLine", "value": "10" },
    { "name": "endLine", "value": "40" },
    { "name": "description", "value": "Show lines 10-40 of main.py" }
  ]
}

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.