Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "agentlinkops",
"version": "0.6.9",
"version": "0.6.10",
"description": "Connect an agent to AgentLinkOps and run backlink work with it: the connect skill (views, the three discovery verbs, evidence rules), local ledger and campaign skills, a portable CRM, the source-cited content pipeline, user-managed disavow lists, HTML reports and monitoring-event sync.",
"author": {
"name": "AgentLinkOps"
Expand Down
2 changes: 1 addition & 1 deletion .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "agentlinkops",
"version": "0.6.9",
"version": "0.6.10",
"description": "Connect an agent to AgentLinkOps and run backlink work with it: the connect skill (views, the three discovery verbs, evidence rules), local ledger and campaign skills, a portable CRM, the source-cited content pipeline, user-managed disavow lists, HTML reports and monitoring-event sync.",
"author": {
"name": "AgentLinkOps"
Expand Down
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,17 @@
All notable changes to the `agentlinkops` package are recorded here. The version follows the
plugin manifests in `.claude-plugin/` and `.codex-plugin/`.

## 0.6.10 (2026-10-06)

Inspect the installed version's help before using selectors; older published versions
may install the full pack.

- Default agent setup to the connection skill, its reference and detected-client connection setup. A connection-only upgrade retains previously installed optional payloads.
- Select optional skills and versioned recipes with repeatable `--skill ID` and `--recipe ID`; choose the complete pack explicitly with `--all-skills`.
- Refuse targeted skill removal while an installer-owned dependent recipe survives, including a preserved customer-edited body. Untrusted dependency metadata also refuses removal. Preview joint recipe/skill removal after reconciling edits, or preview a complete uninstall without selectors. Customer records and existing file/configuration custody rules remain in place.
- Let customers choose their editorial process, tools and records. Publisher guidance and the bundled CRM are optional; selected recipe recovery no longer requires an unselected campaign recipe.
- Make the supplied-link check visible before hosted examples. It fetches the source page without an account, repository, ledger, CRM or publisher recipe and retains observation uncertainty.

## 0.6.9 (2026-09-25)

- Read ChatGPT citations in the current anonymous layout, where inline citations and source pills are buttons carrying their sources as JSON. 0.6.8 read only anchor links and recorded these answers as unknown. Code-copy, table-copy and entity controls are recognized as non-citations; any other unrecognized control still keeps the answer unknown.
Expand Down
56 changes: 44 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,28 +12,50 @@ separate service; this package is the local half and needs no account.

## Give your agent AgentLinkOps

Four steps, the same ones the docs and the landing page show. Node.js 22.13 or later.
Use Node.js 22.13 or later. Choose a supplied-link check or a hosted task, then inspect
the installed version's help before selecting guidance.

1. **Install the skill.** Detects the agent clients on this machine (Claude Code, Codex,
Cursor, Gemini CLI, Hermes), installs the skill pack at each one's skills path and writes
its MCP entry; stores no credential and prints what it changed.
1. **Inspect setup and choose guidance.** CLI 0.6.10 installs the connection skill
and its reference by default, with MCP setup for detected clients. Select optional
guidance explicitly. Setup stores no credential and reports changes. CLI 0.6.9
and earlier can install the complete pack. Native-client acceptance remains
separate from package checks.

```sh
npx -y agentlinkops --help
npx -y agentlinkops agent setup
```

With the `skills` CLI instead: `npx -y skills add https://agentlinkops.com`, then add
`https://app.agentlinkops.com/mcp` as a remote HTTP MCP server in your client.
2. **Sign in when your agent asks.** The client opens the AgentLinkOps sign-in; you pick the
account, workspace and scopes. Nothing is pasted into a chat.
3. **Verify.** Ask your agent to list your AgentLinkOps projects, or run `agentlinkops doctor`.
On a version whose help supports selection, use `agentlinkops agent setup --skill ID`
or `--recipe ID` for optional guidance; repeat either flag for several choices.
Choose `--all-skills` only for the complete pack. Customer instructions and records
remain the customer's choice.

Preview `agentlinkops agent remove --recipe ID` or `--skill ID` before adding
`--apply`. The installer refuses skill removal while a recipe it owns still
needs the skill. Keep the skill or select both that recipe and its skill after
reconciling customer edits. The installer preserves edited recipe bodies, which
can still block joint removal.
For an intended complete uninstall, preview
`agentlinkops agent remove --scope project` (or `user`), then add `--apply`.
2. **Sign in for a chosen hosted task.** The client opens the AgentLinkOps sign-in;
you pick the account, workspace and scopes. Nothing is pasted into a chat.
A supplied-link check needs no account or hosted connection.
3. **Verify hosted access when needed.** Ask your agent to list your AgentLinkOps
projects, or run `agentlinkops doctor`.
4. **Check a placement.** Ask: "check whether [publisher page] links to [my page], show the
dated observation and any uncertainty." No account yet? The same verifier runs locally:

```sh
npx -y agentlinkops check --source https://publisher.example/resources --target https://your-site.example/guide
npx -y agentlinkops check --source https://publisher.example/resources --target https://your-site.example/guide --scope exact --json
```

This fetches a public source page and returns an observation; no repository,
ledger, CRM or publisher recipe is required. Read the state and evidence limits,
including an unknown result. A returned result does not establish presence.

The skill is a short door: the first time your agent uses AgentLinkOps in a session it reads
the full agent reference, which `agentlinkops skill` prints and
https://agentlinkops.com/SKILL.md serves. Hosted monitoring is an invitation-only pilot; the
Expand All @@ -50,11 +72,20 @@ agentlinkops --help
Or run it once without installing:

```sh
npx agentlinkops check
npx -y agentlinkops check --source https://publisher.example/resources --target https://your-site.example/guide --scope exact --json
```

## Check one link with no account

Check a supplied pair from any working directory, without creating a ledger:

```sh
agentlinkops check --source https://publisher.example/resources --target https://your-site.example/guide --scope exact --json
```

If you choose to retain expected links in a repository ledger, use the optional
local workflow:

```sh
cd your-repository
agentlinkops init
Expand All @@ -67,9 +98,10 @@ agentlinkops status
the source page and appends an observation to the mirror. `status` names every entry whose
observations disagree with its intent and proposes the edit; applying it is a commit you make.

Exit codes: `0` when every expected link is present, `1` only when an expected link is observed
absent with complete evidence, `2` for a usage, configuration or ledger error. An unknown never
fails the run. Pass `--fail-on-unknown` when your CI wants it to.
For ledger checks, exit codes are `0` when every expected link is present, `1` only
when an expected link is observed absent with complete evidence, and `2` for a usage,
configuration or ledger error. An unknown never fails the run.
Pass `--fail-on-unknown` when your CI wants it to.

`agentlinkops doctor` verifies the ledger, the verifier self-test, cloud reachability and the
token, and prints a fix line for anything that fails.
Expand Down
10 changes: 9 additions & 1 deletion cli/admission.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ export async function admissionMain(
argv,
{ client, out = console.log, err = console.error } = {},
) {
let json = false;
try {
const seen = new Set();
for (const token of argv.filter((a) => a.startsWith("--"))) {
Expand All @@ -53,6 +54,7 @@ export async function admissionMain(
}
const a = parseArgs(argv, ["url"]),
op = operations[a._[0]];
json = a.json === true;
if (
!op ||
a._.length !== 1 ||
Expand Down Expand Up @@ -124,7 +126,13 @@ export async function admissionMain(
out(JSON.stringify(result.data, null, 2));
return 0;
} catch (error) {
err(error?.code ? `${error.code}: ${error.message}` : error.message);
if (error.publicError) {
if (json) err(JSON.stringify({ error: error.publicError }));
else {
const next = [error.publicError.next, error.publicError.details?.next].find(value => typeof value === 'string' && value.trim());
err(`${error.code}: ${error.serverMessage ?? error.message}${next ? `\n${next}` : ''}`);
}
} else err(error?.code ? `${error.code}: ${error.message}` : error.message);
return 2;
}
}
Loading
Loading