hirify-cli 0.4.7 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +189 -51
- package/bin/hirify.js +3 -1883
- package/bin/lib/api.js +130 -0
- package/bin/lib/auth.js +112 -0
- package/bin/lib/browser.js +34 -0
- package/bin/lib/cli.js +126 -0
- package/bin/lib/commands.js +827 -0
- package/bin/lib/config.js +27 -0
- package/bin/lib/errors.js +20 -0
- package/bin/lib/http.js +113 -0
- package/bin/lib/input.js +39 -0
- package/bin/lib/loopback.js +65 -0
- package/bin/lib/main.js +103 -0
- package/bin/lib/messages.js +62 -0
- package/bin/lib/store.js +123 -0
- package/bin/lib/update.js +171 -0
- package/bin/open-browser.js +2 -13
- package/npm-shrinkwrap.json +349 -0
- package/package.json +18 -4
- package/skills/hirify/SKILL.md +58 -76
- package/skills/hirify/reference.md +20 -13
package/skills/hirify/SKILL.md
CHANGED
|
@@ -8,24 +8,24 @@ description: Job search through Hirify - vacancies from the user's saved feeds,
|
|
|
8
8
|
Use the Hirify job board through the `hirify` CLI. This file gives the working order; `reference.md`
|
|
9
9
|
has every command in full, and `hirify intro` is the server's guide.
|
|
10
10
|
|
|
11
|
-
## Setup
|
|
11
|
+
## Setup and automation
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
`
|
|
16
|
-
|
|
17
|
-
says yes.
|
|
13
|
+
Package: `hirify-cli`; command: `hirify`; Node >=18. Prefer Node 22 or 24.
|
|
14
|
+
Without a global install use `npx -y hirify-cli <command>` (npm may cache it).
|
|
15
|
+
Offer `npm install -g hirify-cli` only with permission. Global installs can update automatically;
|
|
16
|
+
for reproducible work use an exact version and `HIRIFY_NO_AUTO_UPDATE=1`.
|
|
18
17
|
|
|
19
|
-
|
|
18
|
+
A person runs `hirify login` and confirms the printed link. The CLI tries a browser only when
|
|
19
|
+
appropriate. Do not run login for them. `--no-browser` is manual callback login, not device flow.
|
|
20
|
+
SSH needs `--callback-port` with a matching SSH local port forward. Local agents reuse the person's
|
|
21
|
+
saved sign-in when permitted to access the same configuration directory. CI and separate containers
|
|
22
|
+
can use `HIRIFY_KEY` or `hirify auth --stdin`; never put a key in a command, log or chat.
|
|
23
|
+
`hirify auth status --json` identifies the local source. Environment keys override saved access;
|
|
24
|
+
logout is local and does not unset them. Use `hirify login --force` to replace expired access.
|
|
20
25
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|---|---|
|
|
25
|
-
| Filter names and their values | `hirify filter guide` |
|
|
26
|
-
| Reveals, vacancy opens and applies left | `hirify account show` |
|
|
27
|
-
| Rate limits, plan, abilities | `hirify account show --json` |
|
|
28
|
-
| The commands that exist | `hirify --help`, `hirify <noun>` |
|
|
26
|
+
Fetch mutable facts: `filter guide` for filter names/values, `account show --json` for current
|
|
27
|
+
allowances and permissions, `--help` for commands, `capabilities show <id> --json` for inputs,
|
|
28
|
+
effects and metering. This file supplies working rules, not a snapshot of server policy.
|
|
29
29
|
|
|
30
30
|
## Two rules before anything else
|
|
31
31
|
|
|
@@ -44,40 +44,24 @@ no permission. Sending, saving and configuring do.
|
|
|
44
44
|
|
|
45
45
|
## Working order
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
hirify vacancy read <slug>
|
|
53
|
-
hirify vacancy reveal <slug>
|
|
54
|
-
hirify vacancy apply <slug>
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
1. `hirify account show` before revealing anything.
|
|
58
|
-
2. Feeds first, search second. A feed is a filter the user built, so it already says what they want.
|
|
59
|
-
3. Shortlist **from the cards**. They carry no contacts, and that is normal.
|
|
60
|
-
4. `hirify vacancy read` the shortlist. The card is a headline; the text is where fit is decided, and
|
|
61
|
-
reading is cheap. Judging fit without reading is guessing.
|
|
62
|
-
5. `hirify vacancy reveal` only what still fits after reading. A reveal spent at random is spent.
|
|
63
|
-
6. Apply only after the user says yes, and read the rules below first.
|
|
47
|
+
1. `hirify account show` before spending; use `feed list` and `feed show <id>` first.
|
|
48
|
+
2. Search when no saved feed fits. Shortlist from cards; missing contacts are normal.
|
|
49
|
+
3. `vacancy read <slug>` to assess fit from the full text rather than a headline.
|
|
50
|
+
4. `vacancy reveal <slug>` only for vacancies that still fit after reading.
|
|
51
|
+
5. Apply only after the person's approval and the rules below.
|
|
64
52
|
|
|
65
53
|
## Searching
|
|
66
54
|
|
|
67
|
-
`vacancy search` takes a phrase and
|
|
68
|
-
|
|
69
|
-
are the CLI's own, not filters.
|
|
55
|
+
`vacancy search` takes a phrase and server-defined filter options; `--limit` and `--page` control
|
|
56
|
+
pagination. Never guess criterion names or values. An empty result can mean a misspelt value.
|
|
70
57
|
|
|
71
|
-
|
|
72
|
-
criterion names or values. The final search refuses an unknown criterion, while a misspelt value
|
|
73
|
-
can return an empty list that looks like an honest "nothing matches". If a server does not serve
|
|
74
|
-
the guide, it says so; then ask the user what to filter on.
|
|
75
|
-
|
|
76
|
-
1. Read `hirify filter guide` and build a draft from the user's request or profile.
|
|
58
|
+
1. Read `hirify filter guide` and build criteria from the user's request or profile.
|
|
77
59
|
2. Run `hirify api call filters.preview --data '{"filters":{...},"mode":"compact","per_page":20}'`.
|
|
78
|
-
3. Inspect cards and `meta.total`; refine and preview again if
|
|
60
|
+
3. Inspect cards and `meta.total`; refine and preview again if empty, broad or irrelevant.
|
|
79
61
|
4. Run `hirify vacancy search` with the validated criteria.
|
|
80
62
|
|
|
63
|
+
If the guide is unavailable, ask the user about criteria rather than guessing.
|
|
64
|
+
|
|
81
65
|
## Applying
|
|
82
66
|
|
|
83
67
|
Two cases, two commands:
|
|
@@ -112,40 +96,38 @@ hirify webhook create "<name>" <url>
|
|
|
112
96
|
Creating a delivery endpoint returns a **secret shown once**: give it to the user immediately to
|
|
113
97
|
store, because it signs every delivery and cannot be shown again.
|
|
114
98
|
|
|
115
|
-
##
|
|
116
|
-
|
|
117
|
-
`hirify feedback send <bug|feature> "<title>" --body "<text>" [--vacancy <slug>]`
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
-
|
|
127
|
-
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
noun takes. Read the list rather than guessing again.
|
|
99
|
+
## Feedback and failures
|
|
100
|
+
|
|
101
|
+
`hirify feedback send <bug|feature> "<title>" --body "<text>" [--vacancy <slug>]` is free.
|
|
102
|
+
Ask first and send the user's words. Report the actual received/queued status and retain the
|
|
103
|
+
reference; do not promise a reply or a fix. Keep an explicit `--idempotency-key` for deliberate
|
|
104
|
+
retries when the server supports it.
|
|
105
|
+
|
|
106
|
+
Parse `--json` success output, never human text. Use `--error-format=json` for structured stderr
|
|
107
|
+
errors; do not combine it with debug if expecting one object. Exit 0 means success, 1 failure,
|
|
108
|
+
2 unsupported server manifest, 130/143 interruption. Read the stable error code and message.
|
|
109
|
+
|
|
110
|
+
- `interaction_required`: ask the person to sign in or configure a key; do not wait on browser login.
|
|
111
|
+
- Storage access failure: compare `doctor`, `version`, and `auth status` with the normal terminal.
|
|
112
|
+
Request permission for the specific command through the agent's approval mechanism. Reading a
|
|
113
|
+
current token needs read access; renewal needs write access. Do not treat storage errors as an
|
|
114
|
+
expired login, copy credentials into the workspace, broaden Windows ACLs, or disable the sandbox.
|
|
115
|
+
Codex on Windows may use a different account; WSL/containers do not share the Windows home.
|
|
116
|
+
- Authentication failure: inspect `auth status`; ask for `login --force` only when renewal requires
|
|
117
|
+
a new sign-in. Never expose a token.
|
|
118
|
+
- 403: permission or plan restriction. 429: pace or a named allowance; inspect `account show`.
|
|
119
|
+
- Network/TLS/proxy failure: fix connectivity or trust configuration; never disable TLS verification.
|
|
120
|
+
- `outcome_unknown`: a metered action or mutation may have succeeded. Check before repeating;
|
|
121
|
+
the CLI does not automatically retry it. Do not blindly repeat apply, reveal or feedback.
|
|
122
|
+
- Server validation names the bound or value to correct; use its message rather than inventing one.
|
|
123
|
+
|
|
124
|
+
`hirify doctor` and `--debug` provide sanitized local diagnostics. Exclude the login URL from reports.
|
|
142
125
|
|
|
143
126
|
## When no command fits
|
|
144
127
|
|
|
145
|
-
`hirify
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
rule holds - ask the user before anything that sends, saves or configures.
|
|
128
|
+
Read `hirify capabilities list --json`, then `hirify capabilities show <id> --json`.
|
|
129
|
+
Prefer a named command where available. Otherwise use
|
|
130
|
+
`hirify api call <id> --data-file request.json --json --error-format=json`.
|
|
131
|
+
JSON files avoid shell quoting errors; `--data-file -` reads stdin. `--cover-file` does the same for
|
|
132
|
+
application text. Use `--` before literal positional values starting with a hyphen.
|
|
133
|
+
Generic calls can spend allowances or mutate the account: the same consent rules apply.
|
|
@@ -15,16 +15,23 @@ come from commands: `hirify filter guide` for filters, `hirify account show` for
|
|
|
15
15
|
`hirify account show --json` for the plan and the limits. Where this file would have quoted one, it
|
|
16
16
|
names the command instead.
|
|
17
17
|
|
|
18
|
-
Add `--json` to any command to get the server's payload
|
|
18
|
+
Add `--json` to any command to get the server's payload with credentials redacted instead of the text below.
|
|
19
19
|
`--fields a,b` narrows a compact answer to the fields you name and never adds one the answer did not
|
|
20
20
|
carry. Parse `--json`; do not parse the text, it is written for a person to read.
|
|
21
21
|
|
|
22
22
|
**Exit codes are stable.** `0` is success, `1` an ordinary error, and `2` means this Hirify speaks a
|
|
23
|
-
newer manifest than your CLI can read - update the CLI.
|
|
24
|
-
beginning with `hirify: `. Branch on the code rather than on the message text.
|
|
23
|
+
newer manifest than your CLI can read - update the CLI. Default errors write a diagnostic to stderr beginning with `hirify: `. Branch on the code rather than on the message text.
|
|
25
24
|
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
Use `--error-format=json` for a versioned error object on stderr. Interruptions return 130/143.
|
|
26
|
+
`HIRIFY_DEBUG=1` or `--debug` emits sanitized phase/reason events, not raw server bodies.
|
|
27
|
+
Use `hirify doctor` for local diagnostics. Never include a sign-in URL or credential in a report.
|
|
28
|
+
|
|
29
|
+
Additional commands: `auth status --json`, `doctor`, `capabilities list --json`,
|
|
30
|
+
`capabilities show <id> --json`, `update --check`, `update <version>`, `update --rollback`.
|
|
31
|
+
`--help` is offline and does not change access. `--timeout <seconds>` controls the command deadline.
|
|
32
|
+
`--data-file <file|->`, `--cover-file <file|->` and `auth --stdin` avoid shell/history exposure.
|
|
33
|
+
Files preserve quotes and Unicode. Generic mutations are never automatically retried;
|
|
34
|
+
`outcome_unknown` requires checking whether the action happened before repeating it.
|
|
28
35
|
|
|
29
36
|
## Cost model
|
|
30
37
|
|
|
@@ -55,14 +62,14 @@ outlives every change to them.
|
|
|
55
62
|
|
|
56
63
|
## Signing in
|
|
57
64
|
|
|
58
|
-
`hirify login
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
65
|
+
A person runs `hirify login`, opens the printed link and confirms access. The CLI tries a browser
|
|
66
|
+
only where appropriate. `--no-browser` disables launching but still needs a reachable callback;
|
|
67
|
+
SSH requires `--callback-port` and a matching port forward. CI/agents should use `HIRIFY_KEY` or
|
|
68
|
+
`hirify auth --stdin`. A new non-interactive browser login fails promptly unless manual mode was explicit.
|
|
69
|
+
Access is stored under an absolute XDG_CONFIG_HOME or `~/.config/hirify`, with private file permissions
|
|
70
|
+
and atomic writes. `auth status --json` shows its source. `logout` clears local access, not server
|
|
71
|
+
access or environment keys. `HIRIFY_KEY` wins over the saved sign-in. Use `login --force` to replace
|
|
72
|
+
access, including when new permissions require consent. Finish older CLI processes before migrating.
|
|
66
73
|
|
|
67
74
|
## Reading
|
|
68
75
|
|