Agent skill

Letterboxd Diary

by joe-bell in joe-bell/skills

Fetch recently watched films from a Letterboxd member's diary RSS feed and render them as a compact markdown list, with first-run setup for the username.

MITAuto-check passedKnowledge Management

Install Letterboxd Diary

skills CLI
$ npx skills add joe-bell/skills --skill letterboxd-diary -a claude-code

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

GitHub CLI
$ gh skill install joe-bell/skills letterboxd-diary --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/joe-bell/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/letterboxd-diary .claude/skills/letterboxd-diary && 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
letterboxd-diary
GitHub stars
211
Token cost
~4.2k tokens
SKILL.md length
2,380 words
Files
3 (incl. references)
Skills in repo
3
Repo updated
First seen
Licence
MIT

At a glance

Fetch recently watched films from a Letterboxd member's diary RSS feed and render them as a compact markdown list, with first-run setup for the username.

  • Works in 8 steps: Username → Source → Parsing → …
  • Asked what someone last watched
  • SKILL.md covers 1. Username, 2. Source, 3. Parsing and 4. Selecting items, plus 4 more sections
  • Calls curl; reaches letterboxd.com

What it does

Letterboxd Diary is an agent skill from joe-bell/skills. Fetch recently watched films from a Letterboxd member's diary RSS feed and render them as a compact markdown list, with first-run setup for the username. Use when asked what someone last watched, their recent films, their Letterboxd diary or activity, films watched since a date or in a period, their last N movies, or their ratings of recent films — even if Letterboxd isn't named, or if they say "watchlist" when they mean watched films.

Its SKILL.md is about 4.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/maintenance.md` and `references/sources.md`).

It sits in Knowledge Management, covering Journaling and reflection. The repository describes itself as: Skills for me (and you). The licence is MIT.

When your agent uses it

  • Asked what someone last watched
  • Their recent films
  • Their Letterboxd diary
  • Films watched since a date

Example prompts

  • “t named, or if they say”
  • “/letterboxd-diary”

Requirements

  • Pre-approved tools (allowed-tools): Bash(curl -sSf https://letterboxd.com/:*), WebFetch(domain:letterboxd.com)

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Username
  2. Source
  3. Parsing
  4. Selecting items
  5. Output format
  6. Reviews
  7. Examples
  8. Maintenance

What it can do on your machine

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

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash(curl -sSf https://letterboxd.com/:*)
    • WebFetch(domain:letterboxd.com)

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • curl

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • letterboxd.com

    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

Letterboxd Diary loads about 4.2k tokens when it runs, and up to ~5.9k if it reads all its reference files. Until then it costs about 114 tokens; SKILL.md has 2,380 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~114
When it runs · the whole SKILL.md, loaded when a task matches
~4.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~5.9k

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 joe-bell/skills at commit 2eb6b5d, republished under its MIT licence (© joe-bell). 2,380 words, ~4,177 tokens.

Download SKILL.mdSave it as .claude/skills/letterboxd-diary/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
letterboxd-diary
description
Fetch recently watched films from a Letterboxd member's diary RSS feed and render them as a compact markdown list, with first-run setup for the username. Use when asked what someone last watched, their recent films, their Letterboxd diary or activity, films watched since a date or in a period, their last N movies, or their ratings of recent films — even if Letterboxd isn't named, or if they say "watchlist" when they mean watched films.
allowed-tools
Bash(curl -sSf https://letterboxd.com/:*), WebFetch(domain:letterboxd.com)
metadata.source
hand-maintained by Joe Bell; derived from the public Letterboxd RSS feed
metadata.reviewed
2026-09-22 against four live letterboxd.com RSS feeds
metadata.upstream
https://github.com/joe-bell/skills/tree/main/skills/letterboxd-diary
metadata.version
2026-09-22.9

Letterboxd diary

Pull watched films from a member's public Letterboxd RSS feed and render them as a markdown list.

1. Username

The skill ships with no username. Resolve one in this order, and stop at the first that answers:

  1. A username in the request. "What has <username> been watching?" wins over anything saved. Use it for that request only.
  2. A saved username, in whichever of these the host has:
    • the LETTERBOXD_USERNAME environment variable;
    • a Letterboxd username: <username> line in the host's persistent instructions or memory — CLAUDE.md, AGENTS.md, a memory file, a user preferences file.
  3. Ask. One question and nothing else: "What's your Letterboxd username?" Explain that it is the last path segment of the profile URL — letterboxd.com/<username>/ — only if asked what that means.

After asking, offer once to save it, and write it only where the user agrees:

  • export LETTERBOXD_USERNAME=<username> in their shell profile, or
  • add Letterboxd username: <username> to the host's instructions or memory file.

Never edit this file to store the username. Installs are copied folders — a username written into SKILL.md is lost the next time the skill updates, and leaks if the install is shared. Do not create config files inside the skill directory either, for the same reason.

An unknown username returns HTTP 404, and curl -f then exits non-zero with a message naming the 404. Read the message, not the exit code — the same 404 exits 22 over HTTP/1.1 and 56 over HTTP/2. Source: curl 8.7.1, observed 2026-09-22. Treat it as a wrong username: say which one was tried and ask for the right one, and do not guess variations. Any other non-zero exit is not a bad username; rung 1 of section 2 says how to tell a blocked host from a fault somewhere else.

2. Source

  • Feed: https://letterboxd.com/<username>/rss/
  • Fetch it fresh every time; the diary changes often.
Retrieval ladder

Hosts differ in what may reach the network, and a host that blocks one route usually still has another. Try these in order, allow each rung one attempt, and move down on failure. Never retry a rung that has already failed, and never go back up.

  1. A shell, with curl. The fast path.

    curl -sSf https://letterboxd.com/<username>/rss/

    Read the error, not the exit code, and sort it into three:

    • A 404 is a wrong username — section 1.
    • A policy denial — a 403, a proxy refusal, a deny-reason header naming a host allowlist, a blocked DNS lookup — means the host will not let the shell reach letterboxd.com. Drop to rung 2 and say so once at the end. Source: HTTP 403 with a deny-reason header naming a host allowlist, claude.ai web chat, 2026-09-22.
    • Any other failure — a 5xx from Letterboxd, a TLS error, no curl on the machine — also drops to rung 2, but it is not an allowlist problem. Report what actually failed instead.
  2. The host's fetch tool, if it has one. Two failures, leading different ways:

    • It refuses the URL over where the URL came from. Some hosts only open URLs that appeared in a user message or an earlier result, and a skill file does not count. Go to rung 3. Source: refused as a permissions error on claude.ai web chat, and in a Claude Desktop local-agent session, 2026-09-22.
    • Anything else — no fetch tool at all, or one that converts the page to markdown and drops the namespaced letterboxd:* elements section 3 parses. Rung 3 cannot help with either, so go to rung 4.
  3. Ask for the URL back. Only after that first refusal. Such a host will open the very same URL once it has appeared in a user message, so the permission is one paste away. Fetching the pasted URL is a fresh call the host now allows, not a retry of rung 2.

    Put the feed URL in a fenced code block and ask for it back:

    To finish setup, send this link back as its own message:
    https://letterboxd.com/<username>/rss/

    A fenced block — not inline code, not a link. Copying out of a fence gives plain text, and a client that auto-links a bare domain can send the domain and the path as separate pieces, so the full URL never arrives as one string and the fetch is refused again. Say nothing else unless asked why.

    When the reply arrives, fetch the URL exactly as sent, then check the response as rung 2 would: it has to be the raw feed with the namespaced letterboxd:* elements intact. Only then continue with section 3.

    A paste settles where the URL came from and nothing else, so this rung ends at rung 4 whenever that isn't the whole problem: the fetch fails for any reason other than provenance, or it returns markdown with the namespaced elements stripped. A reply that still isn't one contiguous URL gets one further ask for it as plain text, then rung 4 as well.

    The permission belongs to the conversation, so this repeats in each new one on such a host. With the username already saved, skip the question in section 1 and go straight to the URL block. Source: fetch refused from the skill file, then returning application/rss+xml with all 50 entries and every namespaced element intact once pasted, claude.ai web chat, 2026-09-22.

  4. A browser tool, if the host has one — an in-app browser pane or a browser extension. Navigate to the feed URL and read the page text. Browsers serve the feed as plain XML source with every namespaced element intact, so section 3 parses it unchanged. A full 50-entry feed runs to about 43 KB, so raise any character limit the read offers rather than parsing a truncated feed. Source: letterboxd.com RSS feed read through the Claude desktop app's Chromium browser pane (Chrome 152), macOS 26.0 / Darwin 27.0.0, 2026-09-22.

Never web-search for the feed. Search engines do not index RSS feeds, so a web search spends a round trip and returns nothing usable. The lower rungs are the answer to a blocked rung 1 — and looking up the host's own browser tool, where tools are listed or loaded on demand, is part of taking rung 4, not a search.

When network policy blocks the shell

Only when rung 1 ran and failed with a policy denial — a 403, a proxy refusal, a deny-reason header naming a host allowlist, a blocked DNS lookup — add one line after the films: the host would not let the shell reach letterboxd.com, and allowing that domain in its network settings makes every later request a single fetch, with no paste step and no browser. Once per conversation, not once per request.

Say none of that otherwise. A 5xx, a TLS error or a missing curl is Letterboxd's fault or the machine's, and no allowlist will touch it — name the actual failure if it is worth naming at all. A host with no shell has nothing to allowlist either.

If asked where that setting is, answer for the host in hand rather than guessing a menu:

  • claude.ai — Settings, then Capabilities, then code execution and file creation, which is where the allowed-domains list sits. On an organisation-managed plan an admin may have to add the domain instead. Source: reported from a claude.ai session, 2026-09-22.
  • Anywhere else — it is the host's sandbox or code-execution network allowlist. Name letterboxd.com and let the user find it; do not invent a path.

The feed is newest-first by publish date and carries a fixed window. Section 4 says what that window actually covers — it is not simply "the last 50 things".

It does not include the watchlist (films saved to watch later). If asked for the actual watchlist, say there's no official feed for it and link https://letterboxd.com/<username>/watchlist/.

A member who has logged nothing has a feed with no <item> elements. Say the diary is empty rather than reporting an error.

Pre-approved calls

allowed-tools pre-approves exactly two things and nothing wider: curl against https://letterboxd.com/, and fetching that one domain.

  • Use the flags as written. The entry is a literal command prefix, so a different flag order is a different command and won't match.
  • -f makes curl exit non-zero on a 404 rather than handing back an error page to parse.
  • Some hosts split allowed-tools on spaces, which would break the curl entry. If it isn't honoured, that's why — the skill still works, it just asks for permission first.
  • Rung 4 of the ladder is deliberately not listed. Browser tools are named differently on every host, so pre-approving one would be a guess; expect a permission prompt there.
Show full SKILL.md (978 more words)Show less

3. Parsing

Each film is an <item> with these fields. Source: letterboxd.com RSS feed, observed 2026-09-22.

  • letterboxd:filmTitle — film title (use this, not <title>, which also contains year and stars)
  • letterboxd:filmYear — year
  • <title> — Title, Year - ★★★★ when rated, or plain Title, Year when not. Do not parse the rating out of it. A film title can itself contain space-hyphen-space, so Example - Part Two, 2020 has a suffix that looks like a rating and is really part of the title. Use letterboxd:filmTitle for the title and the field below for the rating.
  • <link> — diary entry URL
  • letterboxd:watchedDate — date watched (YYYY-MM-DD)
  • letterboxd:memberRating — numeric rating, e.g. 3.5. Absent entirely when the film is unrated, so its presence — not the title text — is the test for whether a rating exists. Source: observed across four public feeds, 2026-09-22
  • letterboxd:rewatch — Yes / No
  • letterboxd:memberLike — Yes / No
  • tmdb:movieId, <pubDate>, <guid>, <dc:creator>
  • <description> — poster image plus review text or "Watched on …"

Skip items without letterboxd:filmTitle (these are lists, not diary entries).

4. Selecting items

Filter and sort on watchedDate, not pubDate — entries are sometimes logged days later.

  • Default (no qualifier): the single most recent film. Like the output format, this is a default — if the user would rather a bare "what have I been watching?" return several, follow that.
  • "last N" / "past N films": the N most recent.
  • "since DATE": every film with watchedDate on or after DATE.
  • Ranges ("in August", "this year", "between X and Y"): watchedDate within the range, inclusive.
  • Filters on rating, rewatch, or liked films are fine to apply on top.

Sort newest watchedDate first; keep feed order for ties. Rewatches are separate entries — keep them all.

Coverage and truncation

The window is the 50 most recent diary entries by publish date. The member's lists sit on top of that and are skipped, so total <item> count runs higher — 50 to 100 across the feeds checked. Source: observed across four public feeds, 2026-09-22.

Judge completeness by the diary-entry count, not by dates:

  • Fewer than 50 diary entries — that is the member's whole diary. Results are complete; say nothing.
  • Exactly 50 — the window is full and older activity has been pushed out. For a "since" or range request reaching at or before the oldest pubDate in the feed, return what's there and add one line saying the feed only reaches back to that publish date, linking https://letterboxd.com/<username>/films/diary/.

Never treat the oldest watchedDate as the boundary. Entries are published when logged, not when watched, so a single backdated entry drags that minimum years earlier than the real coverage — one feed checked reaches back only to December 2025 by publish date yet contains a January 2024 viewing. Reading that as "history goes back to January 2024" would report an empty 2024 as a complete answer.

5. Output format

This is a default, not a rule. It's the compact shape most requests want — if the user asks for something else, give them that instead and keep it for the rest of the conversation.

One film

A single result is a sentence, not a list. Give the film on its own line with no bullet:

[Title](link) (Year) ★★★★

A one-item bulleted list reads as the start of a list that never arrives. The default in section 4 is a single film, so this is the common case.

If that entry has a review, put it on the next line, still unbulleted:

[Title](link) (Year) ★★★★
Review text.
Several films

One bullet per film:

- [Title](link) (Year) ★★★★
  • Only the title is linked; the year sits in plain parentheses after it.
  • Rating is rendered from letterboxd:memberRating: one ★ per whole point plus ½ for a half, so 3.5 → ★★★½ and 5.0 → ★★★★★. Omit it entirely when the field is absent.
  • If an entry has a review, render it as a sub-bullet under the film (see Reviews below).
Say nothing else

The films are the whole answer. Unless the request asked for more, add no preamble, no closing line, no headers, and no sub-bullets beyond a review — and no commentary around the output either. Watched date, rewatch, rating, likes and counts are details: silence about them is correct, not incomplete.

Three things override this, because they change what the answer means rather than decorate it: the truncation line in section 4, saying the diary is empty when it is, and the blocked-shell line in section 2.

Adding fields

Every field in section 3 is available on request — watched date, rewatch, liked, the numeric rating, TMDB ID, published date — as is the poster URL, which comes from the <img> tag inside <description>. Add them as sub-bullets under each film, or inline if that reads better for what was asked.

Don't volunteer them: "when did I watch these?" asks for the date, "what did I watch last week?" does not. Asking for "details" or "everything" means all of them.

Changing the shape

Equally fine when asked: a table, grouping by month or by rating, sorting oldest first, numbering the list, plain text without links, counts and averages, or dropping the year or stars. Follow the request rather than this section.

6. Reviews

<description> is HTML: a poster <img> paragraph, then either the review text or a plain "Watched on <date>." line.

  • It's a review when <guid> starts with letterboxd-review-, or when the remaining text isn't just the "Watched on …" line. Plain diary entries use letterboxd-watch-. Source: letterboxd.com RSS feed, observed 2026-09-22.
  • Strip the <img> paragraph and any spoiler notice ("This review may contain spoilers."), convert remaining paragraphs to plain text, and keep emoji and line breaks.
  • Multi-paragraph reviews: one sub-bullet, paragraphs joined with a line break.
  • No review → no sub-bullet. Never render the "Watched on …" line.

7. Examples

Request: "films since 5 Sept"

- [Tony](https://letterboxd.com/<username>/film/tony-2026/) (2026) ★★★½
- [Casablanca](https://letterboxd.com/<username>/film/casablanca/) (1942) ★★★★★
- [Point Break](https://letterboxd.com/<username>/film/point-break/) (1991) ★★½

Request: "what did I watch on 2 Aug" — one film, so no bullet

[Spider-Man](https://letterboxd.com/<username>/film/spider-man/) (2002) ★★★½
Finally caught this in 35mm.

Request: "what was the last thing I watched"

[Casablanca](https://letterboxd.com/<username>/film/casablanca/) (1942) ★★★★★

Request: "last 3 films, with the dates"

- [Tony](https://letterboxd.com/<username>/film/tony-2026/) (2026) ★★★½
  - Watched 2026-09-19
- [Casablanca](https://letterboxd.com/<username>/film/casablanca/) (1942) ★★★★★
  - Watched 2026-09-12
- [Point Break](https://letterboxd.com/<username>/film/point-break/) (1991) ★★½
  - Watched 2026-09-06

8. Maintenance

See maintenance.md for how to amend this skill, and sources.md for what it is built from.

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

Files

SKILL.md and 2 other files (references) in skills/letterboxd-diary of joe-bell/skills.

  • SKILL.md
  • references/maintenance.md
  • references/sources.md

Open the folder on GitHubat commit 2eb6b5d

Compare with similar skills

Letterboxd Diary 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.

Letterboxd Diary compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Letterboxd Diary this skilljoe-bell/skills211—~4.2kAutomated safety check: PassMIT
LLM Wikilewislulu/llm-wiki-skill655—~3.7kAutomated safety check: PassNone
Munger Perspectivealchaincyf/munger-skill3791 repos~3.7kAutomated safety check: PassMIT
Daily Journalhuytieu/COG-second-brain1.3k—~1.3kAutomated safety check: PassMIT
Em Grid Scorermanager-dot-dev/manager-skills114—~5.8kAutomated safety check: PassMIT
Digital Brainforyourhealth111-pixel/Vibe-Skills3.6k—~1.7kAutomated safety check: PassApache-2.0

Similar skills

  • LLM Wiki

    lewislulu/llm-wiki-skill

    Build and maintain a Karpathy-style LLM knowledge base — a self-compiling Obsidian markdown wiki where an Agent ingests raw sources, compiles cross-linked concept/entity/summary pages, answers…

    655 GitHub stars~3.7k tokensUpdated 5 mo ago
    Knowledge ManagementAuto-check passed
  • Munger Perspective

    alchaincyf/munger-skill

    查理·芒格的思维框架与表达方式。基于《穷查理宝典》、伯克希尔/Daily Journal股东会、 USC/哈佛演讲、访谈记录、外部批评等50+来源的深度调研, 提炼5个核心心智模型、8条决策启发式和完整的表达DNA。

    379 GitHub starsUsed in 1 repo~3.7k tokens
    Knowledge ManagementAuto-check passed
  • Daily Journal

    huytieu/COG-second-brain

    A passive daily work journal that Claude keeps FOR you so you never have to write it yourself.

    1.3k GitHub stars~1.3k tokensUpdated 7 days ago
    Knowledge ManagementAuto-check passed
  • Em Grid Scorer

    manager-dot-dev/manager-skills

    Score an Engineering Manager's coverage across all 12 cells of the EM Grid based on their calendar and Slack.

    114 GitHub stars~5.8k tokensUpdated 5 mo ago
    Knowledge ManagementAuto-check passed
  • Digital Brain

    foryourhealth111-pixel/Vibe-Skills

    This skill should be used when the user asks to "write a post", "check my voice", "look up contact", "prepare for meeting", "weekly review", "track goals", or mentions personal brand, content…

    3.6k GitHub stars~1.7k tokensUpdated 1 mo ago
    Knowledge ManagementAuto-check passed
  • Context Memory Review

    SCStelz/security-investigator

    Weekly review of an investigation tenant-context memory file against the most recent SOC scan reports (e.g.

    249 GitHub stars~3.7k tokensUpdated yesterday
    Knowledge ManagementAuto-check passed

More from joe-bell/skills

  • Elron

    joe-bell/skills

    Look up Elron train times, fares and connections between Estonian (and cross-border Latvian) stations, see live delays and positions of running trains on a map, and check Ühiskaart farecard…

    211 GitHub stars~2.1k tokensUpdated 2 days ago
    Auto-check passed
  • Apple Web App

    joe-bell/skills

    A skill your agent uses when implementing, debugging, or auditing how any website or web app looks and behaves on iPhone and iPad — in Safari or added to the Home Screen — or added to the Mac Dock…

    211 GitHub stars~1.6k tokensUpdated 2 days ago
    Auto-check passed

Questions about Letterboxd Diary

What does Letterboxd Diary do?

Fetch recently watched films from a Letterboxd member's diary RSS feed and render them as a compact markdown list, with first-run setup for the username. Letterboxd Diary is an agent skill from joe-bell/skills. Fetch recently watched films from a Letterboxd member's diary RSS feed and render them as a compact markdown list, with first-run setup for the username.

When should I use Letterboxd Diary?

Letterboxd Diary fits situations like: asked what someone last watched; their recent films; their Letterboxd diary; films watched since a date.

How do I install Letterboxd Diary in Claude Code?

Run `npx skills add joe-bell/skills --skill letterboxd-diary -a claude-code`. Or copy the skill folder (skills/letterboxd-diary in joe-bell/skills) into .claude/skills/letterboxd-diary in your project. Claude Code loads it when a task matches its description.

How do I install Letterboxd Diary in Codex?

Run `npx skills add joe-bell/skills --skill letterboxd-diary -a codex`. Or copy the skill folder (skills/letterboxd-diary in joe-bell/skills) into .agents/skills/letterboxd-diary in your project. Codex loads it when a task matches its description.

Can I use Letterboxd Diary 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 joe-bell/skills --skill letterboxd-diary -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/letterboxd-diary, .gemini/skills/letterboxd-diary, .github/skills/letterboxd-diary and .opencode/skills/letterboxd-diary in your project.

What does Letterboxd Diary need to run?

Going by SKILL.md and its folder, Letterboxd Diary needs the command-line tools its instructions call (curl). Its frontmatter pre-approves these tools: Bash(curl -sSf https://letterboxd.com/:*), WebFetch(domain:letterboxd.com).

Does Letterboxd Diary access the network?

SKILL.md names 1 domain. In commands or code: letterboxd.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Letterboxd Diary 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 Letterboxd Diary use?

Letterboxd Diary 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 Letterboxd Diary use?

About 4.2k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.7k tokens, read only when the agent opens those files.

What are the alternatives to Letterboxd Diary?

Skills that share tags, products or a category with Letterboxd Diary: LLM Wiki (lewislulu/llm-wiki-skill, 655 stars), Munger Perspective (alchaincyf/munger-skill, 379 stars), Daily Journal (huytieu/COG-second-brain, 1.3k stars) and Em Grid Scorer (manager-dot-dev/manager-skills, 114 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Letterboxd Diary?

joe-bell (a GitHub user) maintains it in joe-bell/skills, which has 211 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 7, 2026.

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