@aholbreich/agent-skills

Handcrafted Agent Skills for browser-authenticated Jira and Confluence ingestion, LLM wiki workflows, and developer automation.

Package details

skill

Install @aholbreich/agent-skills from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@aholbreich/agent-skills
Package
@aholbreich/agent-skills
Version
0.7.0
Published
May 7, 2026
Downloads
270/mo · 270/wk
Author
aholbreich
License
MIT
Types
skill
Size
153.1 KB
Dependencies
0 dependencies · 0 peers
Pi manifest JSON
{
  "skills": [
    "skills"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

Agent Skills

Handcrafted Agent Skills for developer and LLM-wiki workflows. The package is intentionally a pure skills package with broad compatibility across Pi, Claude Code, Codex, OpenClaw/generic .agents setups, and other Agent Skills-compatible harnesses.

This repository is a pure skills package. It currently contains browser-authenticated Atlassian fetch/update tools that work well when Jira/Confluence API-token authentication is unavailable because an organization uses Microsoft/SSO.

Skills

Skill Purpose
jira-browser-fetch Fetch Jira issue JSON, rendered HTML/XML, linked/referenced issues, Jira Software board backlogs, JQL result sets, and attachments through an authenticated Chrome session.
confluence-browser-fetch Fetch Confluence page JSON, storage/view HTML, browser HTML, descendants, CQL result sets, and attachments through an authenticated Chrome session.
confluence-update Dry-run-first Confluence page updates, agent-owned block replacement, Markdown-to-storage conversion, and page creation through an authenticated browser session.

Compatibility

This repository follows the Agent Skills directory convention: each skill lives under skills/<skill-name>/SKILL.md with matching frontmatter.

Recommended install paths:

Use case Command
Cross-agent wizard (recommended) npx skills add aholbreich/agent-skills -g
Pi package-managed install pi install npm:@aholbreich/agent-skills
Project-local/team skills npx skills add aholbreich/agent-skills
Package fallback without the aggregator npx @aholbreich/agent-skills

See COMPATIBILITY.md for details, including collision behavior.

Requirements

  • Node.js >=22.
  • A Chromium-compatible browser: Chrome, Chromium, Brave, Edge, or Vivaldi.
  • Access to the Jira/Confluence site in the browser account you use.
  • Pi, or any Agent Skills-compatible harness, if you want skill discovery.

No npm runtime dependencies are required.

Recommended install with the Skills CLI

For most users, use the open skills installer. It discovers the skills in this repository, prompts for compatible agents, and symlinks agent-specific installs to a single managed source by default.

Global/user install:

npx skills add aholbreich/agent-skills -g

Project-local install, useful for teams:

npx skills add aholbreich/agent-skills

List available skills without installing:

npx skills add aholbreich/agent-skills --list

Non-interactive examples:

npx skills add aholbreich/agent-skills -g --skill '*' -y
npx skills add aholbreich/agent-skills -g --agent claude-code --agent codex --skill jira-browser-fetch -y

Use --copy only when symlinks are not supported in your environment.

Pi-native install

If you only use Pi and want Pi to manage package updates, install the npm package directly:

pi install npm:@aholbreich/agent-skills

Project-local Pi package install, useful for teams that already standardize on Pi packages:

pi install -l npm:@aholbreich/agent-skills

Try without installing:

pi -e npm:@aholbreich/agent-skills

Package fallback with npx

If you cannot use the skills aggregator, this package also ships a small installer. It copies bundled skills into a selected skills directory.

Install bundled skills into the generic Agent Skills directory ~/.agents/skills:

npx @aholbreich/agent-skills

Install for a specific target:

npx @aholbreich/agent-skills install --target agents
npx @aholbreich/agent-skills install --target claude
npx @aholbreich/agent-skills install --target codex
npx @aholbreich/agent-skills install --target project

Install only selected skills:

npx @aholbreich/agent-skills install --skill jira-browser-fetch
npx @aholbreich/agent-skills install --skill confluence-browser-fetch
npx @aholbreich/agent-skills install --skill jira-browser-fetch --target project

Or use the dependency-free interactive picker:

npx @aholbreich/agent-skills install --pick

Overwrite existing installed skill directories:

npx @aholbreich/agent-skills install --target agents --force

List bundled skills:

npx @aholbreich/agent-skills list

Collision and update notes

Avoid installing the same skill into multiple locations for the same agent unless you intentionally want one copy to shadow another. Most agents give project-local skills priority over user/global skills.

For example, in Pi a project skill at .pi/skills/jira-browser-fetch/SKILL.md shadows the same skill installed from npm:@aholbreich/agent-skills. In that case pi update updates the package, but the active project-local copy remains unchanged.

Recommended rule of thumb:

  • Cross-agent users: prefer npx skills add aholbreich/agent-skills -g.
  • Pi-only users: prefer pi install npm:@aholbreich/agent-skills.
  • Team/repo-specific overrides: commit project-local skills intentionally and update them intentionally.

Manual install

git clone https://github.com/aholbreich/agent-skills.git
mkdir -p ~/.pi/agent/skills
cp -a agent-skills/skills/* ~/.pi/agent/skills/

Optional command symlinks:

mkdir -p ~/.local/bin
ln -sf ~/.pi/agent/skills/jira-browser-fetch/scripts/jira-browser-fetch.js ~/.local/bin/jira-browser-fetch
ln -sf ~/.pi/agent/skills/confluence-browser-fetch/scripts/confluence-browser-fetch.js ~/.local/bin/confluence-browser-fetch

npm-style command use from checkout

From this repository:

pnpm run check
./skills/jira-browser-fetch/scripts/jira-browser-fetch.js --help
./skills/confluence-browser-fetch/scripts/confluence-browser-fetch.js --help

If installed globally via npm, the package exposes:

agent-skills
jira-browser-fetch
confluence-browser-fetch
confluence-update

Reuse one Atlassian browser login

To avoid separate Jira and Confluence SSO prompts, use one shared automation profile and DevTools port for both fetchers:

export ATLASSIAN_CHROME_PROFILE="$HOME/.local/share/atlassian-browser-fetch-chrome"
export ATLASSIAN_CHROME_DEBUG_PORT=9223

Skill-specific variables such as JIRA_CHROME_PROFILE or CONFLUENCE_CHROME_PROFILE still override the shared profile when needed.

Confluence update examples

Dry-run an agent-owned block replacement from Markdown:

confluence-update replace-block 123456 \
  --site https://example.atlassian.net \
  --marker agent-summary \
  --file ./summary.md \
  --representation markdown

Apply only after reviewing raw/confluence-updates/...:

confluence-update replace-block 123456 \
  --site https://example.atlassian.net \
  --marker agent-summary \
  --file ./summary.md \
  --representation markdown \
  --apply

Jira examples

Fetch one issue:

jira-browser-fetch PROJ-123 \
  --server https://example.atlassian.net \
  --raw-dir ./raw

Fetch linked/referenced tickets too:

jira-browser-fetch PROJ-123 \
  --server https://example.atlassian.net \
  --raw-dir ./raw \
  --connected \
  --scan-text \
  --depth 1

Fetch all issues assigned to the current Jira user:

jira-browser-fetch \
  --server https://example.atlassian.net \
  --raw-dir ./raw \
  --assignee-me

Fetch a JQL result set:

jira-browser-fetch \
  --server https://example.atlassian.net \
  --raw-dir ./raw \
  --jql 'assignee = currentUser() ORDER BY updated DESC'

Fetch a Jira Software board backlog:

jira-browser-fetch \
  --server https://example.atlassian.net \
  --raw-dir ./raw \
  --backlog 'https://example.atlassian.net/jira/software/c/projects/ABC/boards/42/backlog?epics=visible'

Example user requests that should invoke this skill:

  • "Fetch all Jira issues from this backlog URL into raw/."
  • "Archive board 42's Jira backlog for my LLM wiki."
  • "Fetch PROJ-123 through my browser session and include linked issues."
  • "Pull my assigned Jira issues without asking me for an API token."
  • "Use this JQL and store the raw Jira evidence under the wiki raw folder."

Confluence examples

Fetch one page by URL:

confluence-browser-fetch \
  'https://example.atlassian.net/wiki/spaces/ABC/pages/123456/Page+Title' \
  --site https://example.atlassian.net \
  --raw-dir ./raw

Fetch a page and all descendants:

confluence-browser-fetch 123456 \
  --site https://example.atlassian.net \
  --raw-dir ./raw \
  --descendants

Fetch by CQL:

confluence-browser-fetch \
  --site https://example.atlassian.net \
  --raw-dir ./raw \
  --cql 'space = ABC and type = page and text ~ "billing"'

Attachment size limits

Both fetchers default to skipping attachment downloads larger than 5mb. Skipped files are still referenced in attachments.json with filename, URL, size, and reason.

jira-browser-fetch PROJ-123 --server https://example.atlassian.net --max-attachment-size 1mb
confluence-browser-fetch 123456 --site https://example.atlassian.net --max-attachment-size 10mb

Disable the limit:

--max-attachment-size unlimited

Output and LLM wiki use

The tools are designed to populate a wiki raw/ folder. They do not synthesize pages themselves. A typical LLM wiki workflow is:

  1. fetch Jira/Confluence sources into raw/,
  2. treat raw/ as immutable evidence,
  3. synthesize durable notes into wiki/,
  4. cite raw paths from wiki pages.

Security

Read SECURITY.md. Do not commit fetched raw/ exports or browser profiles.

Development

Run syntax checks and tests:

pnpm run check
pnpm test
pnpm run ci

Tests use Node's built-in test runner and cover pure helper logic plus CLI smoke/error paths. Package validation is intentionally lightweight because the scripts have no runtime npm dependencies.

License

MIT. See LICENSE.