npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

skuld-cli

v0.1.19

Published

Skuld: WakaTime + Git → Jira worklogs

Readme

Skuld — WakaTime + Git → Jira worklogs

  • Matches WakaTime branch names to Jira keys (e.g., SOT‑691)
  • Filters to issues assigned to you (Jira /myself)
  • Adds only the delta (WakaTime − already logged by you)
  • Ticket status: auto‑transitions "To Do/Todo" → "In Progress" on upload and notes the change
  • Posts a worklog with a [SKULD] header. Separate issue comments are disabled by default and can be enabled via config.
  • Idempotent: won’t double‑post the same (issue, window, delta)

Install Overview

  • Choose one method per machine to avoid PATH conflicts.
    • macOS: use Homebrew.
    • Linux: use npm.

Install (macOS via Homebrew)

  • brew tap imprisonedmind/skuld
  • brew install skuld
  • Upgrade later with: brew update && brew upgrade skuld

Note on taps:

  • brew tap imprisonedmind/skuld maps to the GitHub repo imprisonedmind/homebrew-skuld. Homebrew taps are separate repositories rooted at Formula/ and cannot point to a subdirectory inside another repo.
  • The file skuld-cli/Formula/skuld.rb in this repo is a scaffold used for development/examples only; Homebrew does not use it. The actual tap formula lives in the homebrew-skuld repository.

Install (Linux via npm)

  • Prereqs: Node.js/npm and Python 3 available in your PATH.
  • Global install:
    • npm install -g skuld-cli
  • Verify:
    • skuld (shows a concise usage guide) or skuld --help
    • The Node shim will try python3 (then python) and sets PYTHONPATH automatically.

Setup (one‑time)

  • Configure your credentials:
    • skuld start
    • Provide Jira site/email/token and WakaTime API key (auto‑discovered from ~/.wakatime.cfg when possible).
  • Map each repo → WakaTime project (required for sync):
    • From inside the repo you will sync: skuld add
    • This stores a per‑repo mapping in ~/.skuld.yaml and is required so sync only uses time from the current repo’s WakaTime project.

Use (global commands)

  • The commands are the same for Homebrew and npm installs; both provide a skuld binary on PATH.
  • Run with no args for a quick guide: skuld
  • Preview (no writes):
    • Run inside the repo: skuld sync --test (uses the window since your last successful sync) or specify a period like week.
    • If the repo is not mapped yet, the command exits and prompts you to run skuld add here first.
    • Also supports today and yesterday.
  • Upload (writes to Jira):
    • skuld sync
    • By default, syncs everything since your last successful sync; you can also run skuld sync week or skuld sync today.
    • Only posts when there’s time to add; adds a worklog. Issue comments are optional (see Configuration).

Branch Mapping

  • Purpose: sometimes you create and work on a Git branch before a Jira ticket exists. Use Skuld to map branches to Jira keys after the fact so that time on those branches is correctly attributed during syncs.

  • List branches and mappings

    • skuld branches --list (run inside the repo or pass --project /path/to/repo)
    • Shows recent WakaTime branches for this repo’s mapped WakaTime project (last 7 days by default) plus any already‑mapped branches.
    • For longer history: skuld branches --list --days 30
  • Interactive mapping

    • skuld branches --interactive
    • Pick a branch from the list and enter a Jira key (e.g., SOT-728). Mapping is saved to ~/.skuld.yaml under this repo.
  • Direct set/unset

    • Set: skuld branches --set "feature/my-branch" ABC-123
    • Unset: skuld branches --unset "feature/my-branch"
  • Where it’s stored

    • In ~/.skuld.yaml:
      projects:
        "/absolute/path/to/repo":
          wakatimeProject: your-wakatime-project
          branchIssues:
            feature/my-branch: ABC-123
  • How sync uses it

    • During allocation, if a WakaTime branch name does not contain a Jira key, Skuld will use your branchIssues mapping to attribute time to the specified Jira issue.

What it prints (preview)

Worklog Preview (dry-run)
Period: 2025-10-15T09:00:00 → 2025-10-15T17:30:00
-----------------------------------------------------------------------------------------
Issue: SOT-691
Name:  Use real data from mongoDB
Time to add:  1h 26m 28s
Total Time: 1h 26m 28s
Comment:
  [SKULD] - Adding `1h 26m 28s` on `15/10/25` at `1:28 PM`
  - SOT-691 Use real data from mongoDB
-----------------------------------------------------------------------------------------

The comment shown is attached to the worklog itself. Separate issue comments are disabled by default.

How it decides

  • Attribution: WakaTime per‑branch seconds (Summaries API) → branch names with issue keys.
  • Ownership: Jira /rest/api/3/myself, then local filter of issue assignee by your account.
  • Delta: For each issue and period: max(0, WakaTimeSeconds − YourLoggedSecondsInWindow).
  • Uploads: Worklog with [SKULD] ADF comment; optional separate issue comment (disabled by default); idempotent.

Configuration

Skuld reads ~/.skuld.yaml and backs it up to ~/.skuld.yaml.bak on changes. Minimal example:

jira:
  site: https://your-org.atlassian.net
  email: [email protected]
  apiToken: YOUR_JIRA_API_TOKEN
regex:
  issueKey: "[A-Z][A-Z0-9]+-\\d+"
wakatime:
  apiKey: YOUR_WAKATIME_API_KEY
projects:
  "/absolute/path/to/your/repo":
    wakatimeProject: your-wakatime-project
state:
  path: ~/.local/share/skuld/state.json
comment:
  # When true, also post a separate Jira issue comment mirroring the worklog text
  issueCommentsEnabled: false

# Branch mapping (optional)
projects:
  "/absolute/path/to/repo":
    wakatimeProject: your-wakatime-project
    branchIssues:
      feature/my-branch: ABC-123

License

MIT — see skuld-cli/LICENSE.