pi-session-context
A pi coding agent extension that tracks and displays session context (worktree, Jira ticket, GitLab MR) in the footer
Package details
Install pi-session-context from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-session-context- Package
pi-session-context- Version
1.0.0- Published
- Apr 28, 2026
- Downloads
- not available
- Author
- it-ony
- License
- MIT
- Types
- extension, skill
- Size
- 23.7 KB
- Dependencies
- 0 dependencies ยท 2 peers
Pi manifest JSON
{
"extensions": [
"./extensions"
],
"skills": [
"./skills"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-session-context
A pi coding agent extension that tracks and displays what the agent is working on in the footer โ worktree, Jira ticket, GitLab/GitHub MR, or any custom key.
๐ฟ my-repo feat/SDK-1234-fix-auth ๐ SDK-1234 ๐ #771 ยท env staging
Ticket and MR numbers are clickable OSC 8 hyperlinks in supported terminals.
How it works
Context entries are stored as a map. Each entry has a value, an optional type that controls rendering, and an optional icon:
| type | rendering | value |
|---|---|---|
"dir" |
git root + branch (branch is a clickable link to the remote) | filesystem path |
"link" |
clickable hyperlink with a friendly label | full URL |
| (omit) | icon key value plain text |
anything |
The agent calls set_context with a map of entries to update. Keys not mentioned are left unchanged. Pass value: "" to clear a key.
Well-known keys
Three keys have default icons and extra behaviour:
| key | icon | extra behaviour |
|---|---|---|
worktree |
๐ฟ | Sets the bash working directory โ no cd needed |
ticket |
๐ | โ |
mr |
๐ | โ |
Any other key is shown with ยท as the default icon.
Passive detection
The extension scans every tool call for paths inside PI_WORKTREE_BASE. When a worktree path is found it automatically sets worktree and detects the branch โ no explicit set_context call needed.
Use cases
Worktree
Use type: "dir" with the worktree key. The extension resolves the git root, detects the current branch, and reads the remote URL so the branch name becomes a clickable link.
The bash tool is automatically redirected to run from that directory for the rest of the session.
{
"context": {
"worktree": {
"value": "~/Development/worktree/my-repo/feat/SDK-1234-fix-auth",
"type": "dir",
"icon": "๐ฟ"
}
}
}
Renders as: ๐ฟ my-repo feat/SDK-1234-fix-auth (branch links to https://gitlab.example.com/โฆ/-/tree/feat/SDK-1234-fix-auth)
Clearing the worktree key also resets the bash CWD back to the session default:
{ "context": { "worktree": { "value": "" } } }
Jira ticket
Use type: "link" with the full Jira issue URL. The extension extracts the ticket key (SDK-1234) as the display label and renders it as a clickable hyperlink.
{
"context": {
"ticket": {
"value": "https://myorg.atlassian.net/browse/SDK-1234",
"type": "link",
"icon": "๐"
}
}
}
Renders as: ๐ SDK-1234 (clickable, opens the issue in the browser)
GitLab / GitHub MR or PR
Use type: "link" with the full MR or PR URL. The extension extracts the number and displays it as #771.
{
"context": {
"mr": {
"value": "https://gitlab.example.com/myorg/my-repo/-/merge_requests/771",
"type": "link",
"icon": "๐"
}
}
}
Renders as: ๐ #771 (clickable, opens the MR in the browser)
Works identically for GitHub pull requests (/pull/42 โ #42).
Custom entries (plain text)
Any key without a type is displayed as icon key value. Useful for tracking things like environment, target branch, or task status.
{
"context": {
"env": { "value": "staging", "icon": "๐" },
"target": { "value": "develop", "icon": "๐ฏ" }
}
}
Renders as: ๐ env staging ๐ฏ target develop
Putting it all together
A typical agent call when starting work on a ticket:
{
"context": {
"worktree": {
"value": "~/Development/worktree/my-repo/feat/SDK-1234-fix-auth",
"type": "dir",
"icon": "๐ฟ"
},
"ticket": {
"value": "https://myorg.atlassian.net/browse/SDK-1234",
"type": "link",
"icon": "๐"
}
}
}
After pushing and opening the MR, add it:
{
"context": {
"mr": {
"value": "https://gitlab.example.com/myorg/my-repo/-/merge_requests/771",
"type": "link",
"icon": "๐"
}
}
}
When the task is done, clear everything:
{
"context": {
"worktree": { "value": "" },
"ticket": { "value": "" },
"mr": { "value": "" }
}
}
Installation
pi install npm:pi-session-context
# or directly from GitHub:
pi install git:github.com/it-ony/pi-session-context
Configuration
| Variable | Default | Description |
|---|---|---|
PI_WORKTREE_BASE |
~/Development/worktree |
Base directory scanned for git worktrees |
Set in your shell config (e.g. ~/.config/fish/config.fish or ~/.zshrc):
export PI_WORKTREE_BASE="$HOME/code/worktrees"
License
MIT