feat(agenticjobs): the job board, as a command on every box - #64
Merged
Conversation
The board is @profullstack/agenticjobs, the same one running at agenticjobs.work. It has had a CLI since 0.2.0 and it was reachable from exactly one place: a curl installer you had to remember the URL for. This makes it a command here like every other one, installed on first use. Everything is handed through untouched. Two flags are ours, spelled --self-* because every plain word is upstream's. The name is the interesting part. Upstream's own executable is also called `agenticjobs`, so this is the first wrapper in the repo whose name collides head-on with the package it launches. A global install would put two of them on PATH and the winner would come down to directory order; if ours won and it followed PATH it would exec itself. resolveRunner only ever accepts a copy that is not this wrapper, and the vendor prefix means the name exists once. Three plain words are intercepted, and only for the copy we installed. `update`, `uninstall` and `where` are upstream's, and upstream answers them out of a manifest.json that its own curl installer writes. A copy npm puts in our prefix has no manifest, so upstream replies "not installed by the installer" on a box where this command plainly did install it and works. Those three are answered here when the board that would run is ours, and handed straight through when it is not, so a board from upstream's installer keeps upstream's behaviour exactly. That case is already live on this box: upstream's installer writes a real shell script to ~/.local/bin/agenticjobs, which is the directory install-links.mjs links into, and it never takes over a real file even with --force. So a box that already ran their installer reports SKIP and keeps what it had. The README says so rather than leaving it to be discovered. Verified end to end with ~/.local/bin off PATH: first run installed 0.5.0 with pnpm and then ran the command, --self-where reported the prefix, `update` refreshed ours, `uninstall` without --yes changed nothing and with it removed only our prefix. Install goes through vendor-verify, so pnpm's release-age cooldown cannot report success while leaving the old version in place. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WxWrsbLuaSaZqQ7FFTrdVW
ThreatCrush Security Scan12 finding(s) HIGH/CRITICAL: 4 | MEDIUM: 4 | LOW: 4
Snippets are redacted; ThreatCrush never prints matched credential material. |
Merged
ralyodio
added a commit
that referenced
this pull request
Sep 9, 2026
Four changes since v0.29.0, three of which have been sitting on master unreleased: - argontv: the shared line, and whether there is room to sell (#61) - mobile companions: adb, expo and eas, installed on request (#62) - telnyx, because a number bought by clicking is not reproducible (#63) - agenticjobs: the job board, as a command on every box (#64) Claude-Session: https://claude.ai/code/session_01WxWrsbLuaSaZqQ7FFTrdVW Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
agenticjobsjoins the set: the board at agenticjobs.work, installed on first use and handed everything you type.Ours, spelled
--self-*because every plain word is upstream's:--self-update,--self-where.AGENTICJOBS_BINpoints at a copy you would rather run,AGENTICJOBS_SPECpins a version.The name collides with the package it launches
This is the first wrapper here whose name is also upstream's executable name. A global install would put two
agenticjobsonPATH, the winner decided by directory order, and if ours won and followedPATHit would exec itself.resolveRunneronly accepts a copy that is not this wrapper, and the private prefix under~/.local/share/cli-tools/vendor/agenticjobsmeans the name exists once.Three plain words are intercepted, and only for our copy
update,uninstallandwhereare upstream's, answered from amanifest.jsonits owncurlinstaller writes. A copy npm puts in our prefix has no manifest, so upstream replies "not installed by the installer" on a box where this command installed it and works.So those three are answered here when the board that would run is ours (
vendor/missing), and handed straight through when it is not (path/env) so an installer-managed orAGENTICJOBS_BINboard keeps upstream's behaviour exactly.The collision is already live on this box
Upstream's installer writes a real shell script to
~/.local/bin/agenticjobs, the same directoryinstall-links.mjslinks into, and that script never takes over a real file even with--force:That is the right outcome and it is now documented rather than left to be discovered. On a box that has run upstream's installer, this wrapper does not get the name until that script is removed;
cli-tools listshows it as! agenticjobs … ↳ on PATH: …, and the wrapper defers to it correctly.Checks
typecheckreports nothing in the new files (src/argontv.tsandsrc/free-names.tshave pre-existingexactOptionalPropertyTypeserrors on master, untouched).~/.local/binoffPATH, so the vendored path actually runs:Install goes through
vendor-verify, so pnpm's release-age cooldown cannot report success while leaving the old version in place (#59).No version bump here, following #53/#55: the release is its own PR.
🤖 Generated with Claude Code