[
  {
    "description": "The cheat sheet of Jujutsu.",
    "languages": [
      "JavaScript",
      "CSS"
    ],
    "last_updated": "2026-08-11T19:43:47Z",
    "license": [
      {
        "name": "MIT License",
        "spdx": "mit",
        "url": "http://choosealicense.com/licenses/mit/"
      }
    ],
    "links": [
      {
        "label": "logo",
        "url": "https://tamada.github.io/api/assets/jj-cheat-sheet.svg"
      },
      {
        "label": "sbom",
        "url": "https://api.github.com/repos/tamada/jj-cheat-sheet/dependency-graph/sbom"
      },
      {
        "label": "repository",
        "url": "https://github.com/tamada/jj-cheat-sheet"
      },
      {
        "label": "www",
        "url": "https://tamada.github.io/jj-cheat-sheet"
      }
    ],
    "name": "jj-cheat-sheet",
    "owner": "tamada",
    "releases": [],
    "topics": [
      "cheatsheet",
      "jujutsu"
    ]
  },
  {
    "description": "My home-brew recipes.",
    "languages": [
      "Ruby",
      "Rust"
    ],
    "last_updated": "2026-09-07T03:28:08Z",
    "license": [
      {
        "name": "Creative Commons Zero v1.0 Universal",
        "spdx": "cc0-1.0",
        "url": "http://choosealicense.com/licenses/cc0-1.0/"
      }
    ],
    "links": [
      {
        "label": "repository",
        "url": "https://github.com/tamada/homebrew-tap"
      },
      {
        "label": "logo",
        "url": "https://tamada.github.io/api/assets/homebrew-tap.png"
      }
    ],
    "name": "homebrew-tap",
    "owner": "tamada",
    "releases": [],
    "topics": []
  },
  {
    "description": "Pseudo-REST static API generator",
    "languages": [
      "Dockerfile",
      "Just",
      "Elvish",
      "Shell",
      "PowerShell"
    ],
    "last_updated": "2026-08-05T06:21:23Z",
    "license": [
      {
        "name": "MIT License",
        "spdx": "mit",
        "url": "http://choosealicense.com/licenses/mit/"
      }
    ],
    "links": [
      {
        "label": "logo",
        "url": "https://tamada.github.io/api/assets/fauxrest.svg"
      },
      {
        "label": "docs",
        "url": "https://docs.rs/fauxrest/latest"
      },
      {
        "label": "registry",
        "url": "https://crates.io/crates/fauxrest"
      },
      {
        "label": "container",
        "url": "https://quay.io/repository/tama5/fauxrest"
      },
      {
        "label": "sbom",
        "url": "https://api.github.com/repos/tamada/fauxrest/dependency-graph/sbom"
      },
      {
        "label": "repository",
        "url": "https://github.com/tamada/fauxrest"
      },
      {
        "label": "www",
        "url": "https://tamada.github.io/fauxrest"
      }
    ],
    "name": "fauxrest",
    "owner": "tamada",
    "releases": [
      {
        "description": "## What's Changed\n* test: cover numeric derive type preservation by @atharvafulay in https://github.com/tamada/fauxrest/pull/14\n* fix: reject $filter comparisons whose operand kinds cannot be evaluated by @tamada in https://github.com/tamada/fauxrest/pull/24\n* feat: derive template values from filtered data, and add $derive.exclude by @tamada in https://github.com/tamada/fauxrest/pull/25\n* fix: publish output only after the whole build succeeds by @tamada in https://github.com/tamada/fauxrest/pull/26\n* docs: correct the serializer configuration example by @tamada in https://github.com/tamada/fauxrest/pull/30\n* chore: drop the directives $emit replaced by @tamada in https://github.com/tamada/fauxrest/pull/31\n* fix: reject a $-prefixed key that is not a directive by @tamada in https://github.com/tamada/fauxrest/pull/35\n* feat: land $skip and the unknown-directive check on main by @tamada in https://github.com/tamada/fauxrest/pull/36\n* feat: write the whole API as one file with bundle by @tamada in https://github.com/tamada/fauxrest/pull/37\n* fix: send --help and --version to stdout with status 0 by @tamada in https://github.com/tamada/fauxrest/pull/39\n* Release v0.0.5 by @tamada in https://github.com/tamada/fauxrest/pull/40\n\n## New Contributors\n* @atharvafulay made their first contribution in https://github.com/tamada/fauxrest/pull/14\n\n**Full Changelog**: https://github.com/tamada/fauxrest/compare/v0.0.4...v0.0.5",
        "name": "Release v0.0.5",
        "release_date": "2026-08-05T06:24:37Z"
      }
    ],
    "topics": [
      "rest-api",
      "static-api",
      "static-api-generator"
    ]
  },
  {
    "description": "Simple options picker in CLI.",
    "languages": [
      "Rust"
    ],
    "last_updated": "2026-02-09T03:20:15Z",
    "license": [
      {
        "name": "MIT License",
        "spdx": "mit",
        "url": "http://choosealicense.com/licenses/mit/"
      }
    ],
    "links": [
      {
        "label": "docs",
        "url": "https://docs.rs/pick-a-boo/latest"
      },
      {
        "label": "registry",
        "url": "https://crates.io/crates/pick-a-boo"
      },
      {
        "label": "logo",
        "url": "https://tamada.github.io/api/assets/pick-a-boo.png"
      },
      {
        "label": "sbom",
        "url": "https://api.github.com/repos/tamada/pick-a-boo/dependency-graph/sbom"
      },
      {
        "label": "repository",
        "url": "https://github.com/tamada/pick-a-boo"
      }
    ],
    "name": "pick-a-boo",
    "owner": "tamada",
    "releases": [
      {
        "description": "- Add short labels to items (#9 , #10 ).\r\n- As a result, the macro became bloated, so it was separated into a different crate ([pick-a-boo-macros](https://crates.io/crates/pick-a-boo-macros)).\r\n  - This macro's crate is publicly available.\r\n- Subsequently, the version number increased due to changes like GitHub Actions scripts for automated releases, but the core functionality remains unchanged.\r\n\r\nThe binaries of `pick-a-boo` are not available on GitHub. \r\nPlease use `pick-a-boo` with `cargo`.",
        "name": "v0.1.6",
        "release_date": "2026-02-09T03:30:17Z"
      }
    ],
    "topics": [
      "library",
      "select-options",
      "terminal",
      "yes-or-no"
    ]
  },
  {
    "description": "Detects software theft by comparing birthmarks extracted from binaries",
    "languages": [
      "Rust",
      "Shell",
      "Java",
      "Python",
      "Just"
    ],
    "last_updated": "2026-09-06T09:00:28Z",
    "license": [
      {
        "name": "MIT License",
        "spdx": "mit",
        "url": "http://choosealicense.com/licenses/mit/"
      }
    ],
    "links": [
      {
        "label": "logo",
        "url": "https://tamada.github.io/api/assets/oinkie.png"
      },
      {
        "label": "container",
        "url": "https://quay.io/repository/tama5/oinkie"
      },
      {
        "label": "sbom",
        "url": "https://api.github.com/repos/tamada/oinkie/dependency-graph/sbom"
      },
      {
        "label": "repository",
        "url": "https://github.com/tamada/oinkie"
      },
      {
        "label": "www",
        "url": "https://tamada.github.io/oinkie/"
      }
    ],
    "name": "oinkie",
    "owner": "tamada",
    "releases": [
      {
        "description": "## Upgrading from v0.4.0\n\n**Re-lift anything whose symbols could hold a quote, a backslash or a control\ncharacter.** The lifting script escaped none of them (#77), so files produced by\nv0.4.0 and earlier fall into two cases.\n\nA name holding a `\"` produced a file that cannot be parsed at all. If you have\nsuch a file, `extract` has been refusing it with a JSON error naming a line and\ncolumn; lifting it again is the fix, and any copy repaired by hand can be\ndiscarded.\n\nA name holding a `\\` is the case worth knowing about, because nothing announced\nit. The file parses. A name written as `\\t` is read back as a name holding a\ntab, so the birthmark was extracted from a name the program does not have, and\nthe similarity it took part in was computed against the wrong string. `fc-*`\nbirthmarks are built from symbol names and are affected directly; the `op-*`\nfamilies do not use names and are not.\n\nNothing else about the format changed, so files without such names are\nunaffected and need not be regenerated. A lift of the same binary before and\nafter this release is byte-identical unless one of these characters appears.\n\n## Highlights\n\n- **#77** — `lift` escapes the names it writes into the intermediate JSON.\n  Nine values reached the file unescaped, so a C++ user-defined literal\n  operator — which Ghidra demangles as `operator\"\"__km` — produced a file\n  `extract` could not read, while `lift` itself exited 0 and reported success.\n  Escaping is now done by a helper that returns a complete JSON string\n  literal, quotes included, so a site that forgets to call it breaks on every\n  input rather than only on a rare one. The writer also stopped swallowing\n  `IOException`, which had let a failed write leave a truncated file behind\n  while `analyzeHeadless` still exited successfully\n- **#85** — the lifting script is compiled on every push. Ghidra compiles it at\n  lift time, so an error in it was never a build failure — it was a lift that\n  produced nothing, reported as a missing output because `analyzeHeadless`\n  exits 0 whether or not its script compiled, with the compiler's diagnostic\n  buried in the captured process output. `assets/lifters/ghidra/compile-check.sh`, also\n  reachable as `just compile-check`, does the same check locally in about two\n  seconds instead of a Ghidra round trip\n- **#84** — the lifter's README states what a `--script` replacement has to\n  satisfy. Four things, two of which are not guessable: the file must be named\n  after its public class, and it must escape the names it embeds. It also says\n  plainly that `--script` is not a sandbox — the script runs inside Ghidra with\n  everything Ghidra can reach\n- **#83** — `lift` reads back what it wrote before calling the lift a success.\n  A lifting script can write bytes, return normally, and leave behind a file\n  nothing can parse; `analyzeHeadless` exits 0 either way, so that used to be a\n  successful lift and the failure surfaced at `extract`, as a parse error\n  naming a line and column in a file the reader had never seen. The check sits\n  in `LifterBuilder::build`, so it covers a script supplied with `--script` —\n  arbitrary Java that oinkie never inspects — and any lifter added later,\n  without its author having to remember. The error names the binary that was\n  lifted, not only the JSON. Related: `lift` and `extract` no longer print\n  \"completed\" on a run that failed\n- **#78** — `oinkie mcp` serves oinkie over the Model Context Protocol, on\n  stdin and stdout, so an agent can drive the birthmark pipeline directly. This\n  release carries the scaffold and one tool, `oinkie_info`, which reports the\n  birthmark types, the algorithms and the shapes they operate on, every\n  canonical `{birthmark}-{algorithm}` analysis name, the pairing strategies and\n  the aggregators — all generated from the same code that parses those names,\n  so the list cannot drift from what is accepted. Lifting is deliberately not\n  exposed: it runs a whole decompiler process per binary, and a replacement\n  script is arbitrary code. The subcommand is behind the `mcp` cargo feature,\n  as `gencomp` is, and the released binaries are built with it\n- **#80** — the MCP server confines what it will touch. `oinkie mcp --root\n  DIRECTORY`, repeatable and defaulting to the working directory, bounds every\n  path a tool is handed, input and output alike; anything resolving outside is\n  refused with a message naming the directories that are allowed. The paths a\n  tool receives are written by a language model rather than by the person\n  running it, which the rest of oinkie was never built to assume. A `..`\n  component is refused outright rather than resolved, and the existing part of\n  a path is canonicalized, so a symlink pointing out of a root does not get\n  through either. `oinkie_reaggregate` arrives with it: it recomputes the score\n  for every pair in a directory of element-wise CSVs under a different\n  aggregator, without comparing anything again\n- **#79** — the MCP server compares. `oinkie_run` takes lifted programs and\n  reports how similar each pair is, which is the whole question in one call;\n  `oinkie_extract` writes birthmarks and `oinkie_compare` scores them, for\n  trying several algorithms without re-reading the programs. Each takes its\n  vocabulary as names `oinkie_info` lists, and a name the library refuses comes\n  back in the library's own words — `op-seq-euclidean` is answered with \"use\n  op-freq-euclidean\" rather than a generic rejection. A destination directory\n  is optional and, when given, is written in the same shape `oinkie run -d`\n  produces, so it can be handed straight back to `oinkie_reaggregate`. Work\n  runs off the async runtime, and a request for more than 500 pairs is refused\n  before anything is read rather than after — `all-and-self` is quadratic, and\n  a model handed a directory will pass all of it\n- **#81** — the MCP server is documented. `cli/mcp/README.md` covers\n  configuring a client, the five tools, `--root`, and why lifting is not among\n  them; the same is on the site under Usage, and `cli/README.md` carries the\n  subcommand's own help. Both container images are now built with the feature,\n  so either is an MCP server as it stands — point clients at `light`, which has\n  no Ghidra to carry, and remember `-i` without `-t`, since a TTY breaks the\n  JSON-RPC framing\n- The docs say accurately why lifting is not an MCP tool. Two of the three\n  reasons they gave had stopped holding: `analyzeHeadless` exiting 0 on a failed\n  script is no longer an obstacle now that #83 makes `lift` read its output\n  back, and \"minutes at a time\" was asserted rather than measured — a\n  hello-world lifts in about six seconds. The decision itself is unchanged, and\n  now reads as settled rather than pending: lifting stays out, and you run\n  `oinkie lift` yourself, on a host with Ghidra or in the `full` image. Nor does\n  it any longer imply a model must be kept away from lifting — one with a shell\n  can run the CLI like anyone else. The link to the lifter's README, left\n  pointing at `lifter/` when #91 moved it, is fixed\n- The product is described the same way everywhere. `Cargo.toml`, both\n  container labels, the README, the site and its metadata carried three\n  different wordings, one of which — \"Birthmarking toolkit for Ghidra P-Code\" —\n  named the only lifter there is as though it were the point. All of them now\n  open with what the repository's own description already said: *detects\n  software theft by comparing birthmarks extracted from binaries*. Where there\n  is room, a second sentence says which lifter exists today\n- `lift.sh` says it is superseded by `oinkie lift`. It is kept for reference\n  and had been introduced as though it were the way to lift, while assuming a\n  working directory, a Homebrew path to Ghidra, and the word `executables`\n  somewhere in the input's path\n- Both container images build again, and something checks that they can. #91\n  moved `lifter/` under `assets/` and the Containerfiles went on copying\n  `lifter`, which no longer existed — a break that sat on `main` unnoticed\n  because nothing builds an image until a release, by which point the tag\n  already exists. CI builds the light image on every push now and asks the\n  result to serve MCP over `docker run -i`, which is how the documentation says\n  to run it. One image on one architecture covers both: the two Containerfiles\n  copy the same paths and share their whole builder stage\n- The released binaries are asked whether they actually serve MCP.\n  `publish.yaml` passed `--features mcp` and nothing looked at the result, so a\n  flag lost in an edit would have shipped an oinkie with no `mcp` subcommand\n  and the first sign of it would have been a client failing to start.\n  `.github/scripts/verify_mcp.sh` speaks the protocol to the artifact — a\n  subcommand that exists but does not work would pass a `--help` grep\n- The version bump no longer breaks the release it is preparing.\n  `update_version.sh` rewrote `Cargo.toml` and left `Cargo.lock`, which names\n  this package's version too — and the container builds with `cargo build\n  --locked`, which exits rather than reconciling the two. The release flow ran\n  the script, committed, and then tried to build an image that could not build.\n  It never bit before because v0.4.0's bump was done by hand, with cargo run at\n  some point along the way; the script path had never been exercised against\n  `--locked`. `cargo update --workspace` now follows the rewrite, and\n  moves exactly the one line that names this package\n\n## What's Changed\n* fix: escape the names the lifting script writes into JSON by @tamada in https://github.com/tamada/oinkie/pull/82\n* feat: compile the lifting script, and say what a replacement must satisfy by @tamada in https://github.com/tamada/oinkie/pull/86\n* feat: read the lifted file back before calling the lift a success by @tamada in https://github.com/tamada/oinkie/pull/87\n* feat: serve oinkie over MCP, with the tool that says what it accepts by @tamada in https://github.com/tamada/oinkie/pull/88\n* feat: confine what the MCP server will touch, and reaggregate over it by @tamada in https://github.com/tamada/oinkie/pull/89\n* feat: compare over MCP -- run, extract and compare by @tamada in https://github.com/tamada/oinkie/pull/90\n* docs: say how to serve oinkie to an agent, and build both images with it by @tamada in https://github.com/tamada/oinkie/pull/92\n* refactor: move the lifter and the analysis scripts under assets by @tamada in https://github.com/tamada/oinkie/pull/93\n* docs: describe the product the same way everywhere, and retire lift.sh by @tamada in https://github.com/tamada/oinkie/pull/95\n* fix: build the images again, and check the things nothing was checking by @tamada in https://github.com/tamada/oinkie/pull/97\n* refactor: one Containerfile with two runtime stages by @tamada in https://github.com/tamada/oinkie/pull/99\n* fix: sync Cargo.lock when the version is bumped by @tamada in https://github.com/tamada/oinkie/pull/101\n* fix: drop --offline, which made the version bump fail on a fresh runner by @tamada in https://github.com/tamada/oinkie/pull/103\n* chore: update version to 0.5.0 by @tamada in https://github.com/tamada/oinkie/pull/104\n\n\n**Full Changelog**: https://github.com/tamada/oinkie/compare/v0.4.0...v0.5.0\n",
        "name": "Release v0.5.0",
        "release_date": "2026-09-06T09:29:47Z"
      }
    ],
    "topics": [
      "birthmark-toolkit",
      "birthmarks",
      "plagiarism-detection",
      "software-theft-detection",
      "ghidra-pcode"
    ]
  },
  {
    "description": "Minimal and alternative ls implementation in Rust.",
    "languages": [
      "Rust",
      "Dockerfile",
      "Just"
    ],
    "last_updated": "2026-07-25T08:06:22Z",
    "license": [
      {
        "name": "Creative Commons Zero v1.0 Universal",
        "spdx": "cc0-1.0",
        "url": "http://choosealicense.com/licenses/cc0-1.0/"
      }
    ],
    "links": [
      {
        "label": "logo",
        "url": "https://tamada.github.io/api/assets/lis.png"
      },
      {
        "label": "container",
        "url": "https://quay.io/repository/tama5/lis"
      },
      {
        "label": "sbom",
        "url": "https://api.github.com/repos/tamada/lis/dependency-graph/sbom"
      },
      {
        "label": "repository",
        "url": "https://github.com/tamada/lis"
      },
      {
        "label": "www",
        "url": "https://tamada.github.io/lis"
      }
    ],
    "name": "lis",
    "owner": "tamada",
    "releases": [
      {
        "description": "## What's Changed\n* Improve tests and docs by @tamada in https://github.com/tamada/lis/pull/14\n* Gemini by @tamada in https://github.com/tamada/lis/pull/13\n* feat: add Containerfile and Justfile for Docker containerization by @tamada in https://github.com/tamada/lis/pull/16\n* feat: add documentation and configuration files for lis project by @tamada in https://github.com/tamada/lis/pull/15\n* Releases/v0.0.11 by @tamada in https://github.com/tamada/lis/pull/17\n\n\n**Full Changelog**: https://github.com/tamada/lis/compare/v0.0.10...v0.0.11",
        "name": "Release v0.0.11",
        "release_date": "2026-06-19T03:22:04Z"
      }
    ],
    "topics": [
      "filesystem",
      "list-files"
    ]
  },
  {
    "description": "A phonetic code encoder/decoder written in Rust",
    "languages": [
      "Shell",
      "Rust",
      "Dockerfile"
    ],
    "last_updated": "2026-02-20T04:36:31Z",
    "license": [
      {
        "name": "MIT License",
        "spdx": "mit",
        "url": "http://choosealicense.com/licenses/mit/"
      }
    ],
    "links": [
      {
        "label": "logo",
        "url": "https://tamada.github.io/api/assets/spellout.svg"
      },
      {
        "label": "docs",
        "url": "https://docs.rs/spellout/latest"
      },
      {
        "label": "registry",
        "url": "https://crates.io/crates/spellout"
      },
      {
        "label": "container",
        "url": "https://ghcr.io/tamada/spellout"
      },
      {
        "label": "sbom",
        "url": "https://api.github.com/repos/tamada/spellout/dependency-graph/sbom"
      },
      {
        "label": "repository",
        "url": "https://github.com/tamada/spellout"
      },
      {
        "label": "www",
        "url": "https://tamada.github.io/spellout/"
      }
    ],
    "name": "spellout",
    "owner": "tamada",
    "releases": [
      {
        "description": "## Commits\n- 67c9b83: Add permissions for id-token in publish_to_crates_io job (Haruaki Tamada) [#3](https://github.com/tamada/spellout/pull/3)",
        "name": "Release v0.1.1",
        "release_date": "2026-02-20T04:36:32Z"
      }
    ],
    "topics": [
      "encoder-decoder",
      "phonetic-code"
    ]
  },
  {
    "description": "Git Ignore Managenement System for Multiple Repositories.",
    "languages": [
      "Rust",
      "Dockerfile",
      "Just",
      "HTML"
    ],
    "last_updated": "2026-08-08T12:10:13Z",
    "license": [
      {
        "name": "MIT License",
        "spdx": "mit",
        "url": "http://choosealicense.com/licenses/mit/"
      }
    ],
    "links": [
      {
        "label": "logo",
        "url": "https://tamada.github.io/api/assets/gixor.svg"
      },
      {
        "label": "docs",
        "url": "https://docs.rs/gixor/latest"
      },
      {
        "label": "registry",
        "url": "https://crates.io/crates/gixor"
      },
      {
        "label": "container",
        "url": "https://quay.io/repository/tama5/gixor"
      },
      {
        "label": "sbom",
        "url": "https://api.github.com/repos/tamada/gixor/dependency-graph/sbom"
      },
      {
        "label": "repository",
        "url": "https://github.com/tamada/gixor"
      },
      {
        "label": "www",
        "url": "https://tamada.github.io/gixor/"
      }
    ],
    "name": "gixor",
    "owner": "tamada",
    "releases": [
      {
        "description": "## What's Changed\n* Release v0.5.2 by @tamada in https://github.com/tamada/gixor/pull/52\n\n\n**Full Changelog**: https://github.com/tamada/gixor/compare/v0.5.1...v0.5.2",
        "name": "Release v0.5.2",
        "release_date": "2026-08-08T11:44:53Z"
      }
    ],
    "topics": [
      "gitignore",
      "gitignore-generator",
      "cli",
      "command-line-tool",
      "git"
    ]
  },
  {
    "description": "A tool for extracting/archiving files and directories in several formats.",
    "languages": [
      "Rust",
      "Dockerfile",
      "Just"
    ],
    "last_updated": "2026-08-12T11:21:07Z",
    "license": [
      {
        "name": "MIT License",
        "spdx": "mit",
        "url": "http://choosealicense.com/licenses/mit/"
      }
    ],
    "links": [
      {
        "label": "logo",
        "url": "https://tamada.github.io/api/assets/totebag.jpg"
      },
      {
        "label": "docs",
        "url": "https://docs.rs/totebag/latest"
      },
      {
        "label": "registry",
        "url": "https://crates.io/crates/totebag"
      },
      {
        "label": "container",
        "url": "https://ghcr.io/tamada/totebag"
      },
      {
        "label": "sbom",
        "url": "https://api.github.com/repos/tamada/totebag/dependency-graph/sbom"
      },
      {
        "label": "repository",
        "url": "https://github.com/tamada/totebag"
      },
      {
        "label": "www",
        "url": "https://tamada.github.io/totebag"
      }
    ],
    "name": "totebag",
    "owner": "tamada",
    "releases": [
      {
        "description": "## What's Changed\n* Release v0.9.0: pure Rust dependencies and consistency cleanup by @tamada in https://github.com/tamada/totebag/pull/93\n\n\n**Full Changelog**: https://github.com/tamada/totebag/compare/v0.8.16...v0.9.0",
        "name": "Release v0.9.0",
        "release_date": "2026-08-12T08:26:20Z"
      }
    ],
    "topics": [
      "archiver",
      "command-line-utilities",
      "compressor",
      "decompressor",
      "unarchiver"
    ]
  },
  {
    "description": "Detecting the build tools in use.",
    "languages": [
      "Rust",
      "Dockerfile",
      "HTML",
      "CSS",
      "Pkl"
    ],
    "last_updated": "2026-07-20T06:40:13Z",
    "license": [
      {
        "name": "MIT License",
        "spdx": "mit",
        "url": "http://choosealicense.com/licenses/mit/"
      }
    ],
    "links": [
      {
        "label": "logo",
        "url": "https://tamada.github.io/api/assets/btmeister.svg"
      },
      {
        "label": "docs",
        "url": "https://docs.rs/btmeister/latest"
      },
      {
        "label": "registry",
        "url": "https://crates.io/crates/btmeister"
      },
      {
        "label": "container",
        "url": "https://ghcr.io/tamada/btmeister"
      },
      {
        "label": "sbom",
        "url": "https://api.github.com/repos/tamada/btmeister/dependency-graph/sbom"
      },
      {
        "label": "repository",
        "url": "https://github.com/tamada/btmeister"
      },
      {
        "label": "www",
        "url": "https://tamada.github.io/btmeister"
      }
    ],
    "name": "btmeister",
    "owner": "tamada",
    "releases": [
      {
        "description": "",
        "name": "Release v0.7.4",
        "release_date": "2025-01-31T11:47:39Z"
      }
    ],
    "topics": [
      "build-tool",
      "project-analysis"
    ]
  },
  {
    "description": "Heatmap generator.",
    "languages": [
      "Shell",
      "Dockerfile",
      "Rust"
    ],
    "last_updated": "2026-07-25T08:08:04Z",
    "license": [
      {
        "name": "MIT License",
        "spdx": "mit",
        "url": "http://choosealicense.com/licenses/mit/"
      }
    ],
    "links": [
      {
        "label": "logo",
        "url": "https://tamada.github.io/api/assets/heatman.svg"
      },
      {
        "label": "docs",
        "url": "https://docs.rs/heatman/latest"
      },
      {
        "label": "registry",
        "url": "https://crates.io/crates/heatman"
      },
      {
        "label": "container",
        "url": "https://ghcr.io/tamada/heatman"
      },
      {
        "label": "sbom",
        "url": "https://api.github.com/repos/tamada/heatman/dependency-graph/sbom"
      },
      {
        "label": "repository",
        "url": "https://github.com/tamada/heatman"
      },
      {
        "label": "www",
        "url": "https://tamada.github.io/heatman"
      }
    ],
    "name": "heatman",
    "owner": "tamada",
    "releases": [
      {
        "description": "",
        "name": "Release v0.1.1",
        "release_date": "2026-06-19T07:09:27Z"
      }
    ],
    "topics": [
      "command-line-utilities",
      "csv",
      "data-visualization",
      "heatmap"
    ]
  },
  {
    "description": "Small Object Programming Checker.",
    "languages": [
      "Java",
      "HTML",
      "Shell",
      "Makefile",
      "Dockerfile"
    ],
    "last_updated": "2026-07-20T06:41:06Z",
    "license": [
      {
        "name": "Apache License 2.0",
        "spdx": "apache-2.0",
        "url": "http://choosealicense.com/licenses/apache-2.0/"
      }
    ],
    "links": [
      {
        "label": "logo",
        "url": "https://tamada.github.io/api/assets/9rules.svg"
      },
      {
        "label": "sbom",
        "url": "https://api.github.com/repos/tamada/9rules/dependency-graph/sbom"
      },
      {
        "label": "repository",
        "url": "https://github.com/tamada/9rules"
      },
      {
        "label": "www",
        "url": "https://tamada.github.io/9rules/"
      }
    ],
    "name": "9rules",
    "owner": "tamada",
    "releases": [
      {
        "description": "",
        "name": "v1.1.1",
        "release_date": "2020-09-23T07:22:55Z"
      }
    ],
    "topics": [
      "java8",
      "code-analysis",
      "code-review",
      "code-quality"
    ]
  },
  {
    "description": "peripheral utility commands for the shell.",
    "languages": [
      "Dockerfile",
      "Makefile",
      "Go",
      "HTML",
      "CSS"
    ],
    "last_updated": "2023-08-05T08:56:35Z",
    "license": [
      {
        "name": "MIT License",
        "spdx": "mit",
        "url": "http://choosealicense.com/licenses/mit/"
      }
    ],
    "links": [
      {
        "label": "logo",
        "url": "https://tamada.github.io/api/assets/peripherals.svg"
      },
      {
        "label": "sbom",
        "url": "https://api.github.com/repos/tamada/peripherals/dependency-graph/sbom"
      },
      {
        "label": "repository",
        "url": "https://github.com/tamada/peripherals"
      },
      {
        "label": "www",
        "url": "https://tamada.github.io/peripherals"
      }
    ],
    "name": "peripherals",
    "owner": "tamada",
    "releases": [
      {
        "description": "",
        "name": "Release v1.0.1",
        "release_date": "2023-08-05T08:56:35Z"
      }
    ],
    "topics": []
  },
  {
    "description": "Java birthmark toolkit, detecting the software theft by native characteristics of the programs.",
    "languages": [
      "Java",
      "HTML",
      "JavaScript",
      "CSS",
      "Dockerfile"
    ],
    "last_updated": "2026-05-08T17:53:32Z",
    "license": [
      {
        "name": "Apache License 2.0",
        "spdx": "apache-2.0",
        "url": "http://choosealicense.com/licenses/apache-2.0/"
      }
    ],
    "links": [
      {
        "label": "logo",
        "url": "https://tamada.github.io/api/assets/pochi.png"
      },
      {
        "label": "container",
        "url": "https://ghcr.io/tamada/pochi"
      },
      {
        "label": "sbom",
        "url": "https://api.github.com/repos/tamada/pochi/dependency-graph/sbom"
      },
      {
        "label": "repository",
        "url": "https://github.com/tamada/pochi"
      },
      {
        "label": "www",
        "url": "https://tamada.github.io/pochi"
      }
    ],
    "name": "pochi",
    "owner": "tamada",
    "releases": [
      {
        "description": "",
        "name": "Release v2.6.0",
        "release_date": "2021-12-13T05:24:16Z"
      }
    ],
    "topics": [
      "birthmarks",
      "plagiarism-detection",
      "software-theft-detection",
      "java9module",
      "birthmark-toolkit"
    ]
  },
  {
    "description": "get next/previous sibling directory name.",
    "languages": [
      "Shell",
      "Rust",
      "Just",
      "AppleScript",
      "Elvish"
    ],
    "last_updated": "2026-08-07T11:43:04Z",
    "license": [
      {
        "name": "Do What The F*ck You Want To Public License",
        "spdx": "wtfpl",
        "url": "http://choosealicense.com/licenses/wtfpl/"
      }
    ],
    "links": [
      {
        "label": "logo",
        "url": "https://tamada.github.io/api/assets/sibling.png"
      },
      {
        "label": "docs",
        "url": "https://docs.rs/sibling/latest"
      },
      {
        "label": "registry",
        "url": "https://crates.io/crates/sibling"
      },
      {
        "label": "sbom",
        "url": "https://api.github.com/repos/tamada/sibling/dependency-graph/sbom"
      },
      {
        "label": "repository",
        "url": "https://github.com/tamada/sibling"
      },
      {
        "label": "www",
        "url": "https://tamada.github.io/sibling/"
      }
    ],
    "name": "sibling",
    "owner": "tamada",
    "releases": [
      {
        "description": "## Bug Fixes\n- build the document site with the Hugo which the theme asks for [#47](https://github.com/tamada/sibling/pull/47) ([Haruaki Tamada](https://github.com/tamada/sibling/commit/37955eb3e39191c6db73078eab6aa2aefaa62d71))",
        "name": "Release v3.0.0",
        "release_date": "2026-08-07T04:51:08Z"
      }
    ],
    "topics": [
      "directory-traversal",
      "utility",
      "shell"
    ]
  },
  {
    "description": "another implementation of wc (word count) accepting archives, directories, and file lists.",
    "languages": [
      "Makefile",
      "Go",
      "Dockerfile",
      "Shell"
    ],
    "last_updated": "2026-07-20T06:39:06Z",
    "license": [
      {
        "name": "Apache License 2.0",
        "spdx": "apache-2.0",
        "url": "http://choosealicense.com/licenses/apache-2.0/"
      }
    ],
    "links": [
      {
        "label": "logo",
        "url": "https://tamada.github.io/api/assets/wildcat.svg"
      },
      {
        "label": "container",
        "url": "https://ghcr.io/tamada/wildcat"
      },
      {
        "label": "sbom",
        "url": "https://api.github.com/repos/tamada/wildcat/dependency-graph/sbom"
      },
      {
        "label": "repository",
        "url": "https://github.com/tamada/wildcat"
      },
      {
        "label": "www",
        "url": "https://tamada.github.io/wildcat"
      }
    ],
    "name": "wildcat",
    "owner": "tamada",
    "releases": [
      {
        "description": "* show progress bar (#30),\r\n* do not read the hidden files by the default (#32),\r\n* show entry count in the total line (#33),\r\n* fix the bug fails to open the directory contains the space on the PowerShell, Windows (#34), and\r\n* change order of options in the help message.",
        "name": "v1.2.0",
        "release_date": "2021-04-28T06:47:01Z"
      }
    ],
    "topics": [
      "word-count",
      "golang",
      "rest-api",
      "docker",
      "cli-app"
    ]
  }
]