agentlinkops 0.6.13 → 0.6.16
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/.claude-plugin/plugin.json +2 -2
- package/.codex-plugin/plugin.json +2 -2
- package/CHANGELOG.md +25 -2
- package/PACK-ARTIFACT.json +16 -0
- package/PACKS.json +591 -0
- package/README.md +34 -48
- package/cli/adapters/suppliers.js +1 -1
- package/cli/agent-setup.js +101 -17
- package/cli/campaign-bridge.js +325 -0
- package/cli/campaign-outcomes.js +107 -0
- package/cli/catalog.js +45702 -18674
- package/cli/check.js +40 -10
- package/cli/client.js +2 -1
- package/cli/commands.js +17 -8
- package/cli/connection.js +92 -18
- package/cli/contact-adoption.js +91 -0
- package/cli/context.js +13 -2
- package/cli/doctor.js +15 -4
- package/cli/import.js +7 -1
- package/cli/key-store.js +115 -0
- package/cli/ledger.js +1 -0
- package/cli/local-result.js +41 -6
- package/cli/main.js +51 -12
- package/cli/mcp-client.js +2 -2
- package/cli/migration.js +308 -0
- package/cli/prompt.js +25 -0
- package/cli/public-http.js +168 -0
- package/cli/state.js +14 -0
- package/cli/sync.js +1 -1
- package/package.json +7 -8
- package/references/citation-panels.md +2 -0
- package/references/cli.md +2 -2
- package/references/disavow.md +1 -1
- package/references/discovery-handoff.md +1 -1
- package/references/local-crm-draft-handoff.md +1 -1
- package/references/portable-ledger-handoff.md +11 -10
- package/references/recipes/catalog.json +263 -7
- package/references/recipes/command-notes.md +5 -3
- package/references/recipes/internal-link-improvement.md +25 -0
- package/references/recipes/placement-reconciliation.md +53 -1
- package/scripts/portable-handoff.py +17 -4
- package/shared/admission-contract.js +3 -2
- package/shared/admission-report-contract.js +3 -2
- package/shared/analytics-history-contract.js +15 -0
- package/shared/campaign-outcome-contract.js +12 -0
- package/shared/campaign-prospect-contract.js +23 -0
- package/shared/classification-contract.js +54 -0
- package/shared/contact-record-contract.js +27 -0
- package/shared/disavow-contract.js +37 -9
- package/shared/index-observation-contract.js +5 -4
- package/shared/internal-links-contract.js +143 -0
- package/shared/link-category-contract.js +35 -0
- package/shared/link-category.js +138 -0
- package/shared/link-labels.js +26 -0
- package/shared/link-summary-contract.js +17 -0
- package/shared/observation-event.js +1 -1
- package/shared/onboarding.js +20 -0
- package/shared/response-contract.js +38 -5
- package/shared/search-connection-contract.js +2 -1
- package/shared/table-page-contract.js +13 -0
- package/skills/agentlinkops-assets/SKILL-DEPS.json +290 -0
- package/skills/agentlinkops-assets/SKILL.md +3 -1
- package/skills/agentlinkops-assets/agents/openai.yaml +1 -1
- package/skills/agentlinkops-assets/references/portable/references/cli.md +220 -0
- package/skills/agentlinkops-assets/references/portable/references/disavow.md +73 -0
- package/skills/agentlinkops-assets/references/portable/references/reports.md +53 -0
- package/skills/agentlinkops-assets/references/portable/scripts/agentlinkops.py +676 -0
- package/skills/agentlinkops-assets/references/portable/scripts/disavow.py +207 -0
- package/skills/agentlinkops-assets/references/portable/scripts/migrations/001_crm.sql +45 -0
- package/skills/agentlinkops-assets/references/portable/scripts/migrations/002_cloud_events.sql +13 -0
- package/skills/agentlinkops-assets/references/portable/scripts/migrations/003_disavow.sql +20 -0
- package/skills/agentlinkops-assets/references/portable/scripts/migrations/004_placement_costs.sql +2 -0
- package/skills/agentlinkops-assets/references/portable/scripts/report.py +113 -0
- package/skills/agentlinkops-assets/references/portable/templates/campaigns.v1.json +65 -0
- package/skills/agentlinkops-campaigns/SKILL-DEPS.json +336 -0
- package/skills/agentlinkops-campaigns/SKILL.md +7 -5
- package/skills/agentlinkops-campaigns/agents/openai.yaml +1 -1
- package/skills/agentlinkops-campaigns/references/first-campaign.md +31 -0
- package/skills/agentlinkops-campaigns/references/mailbox-campaign.md +46 -0
- package/skills/agentlinkops-campaigns/references/portable/references/cli.md +220 -0
- package/skills/agentlinkops-campaigns/references/portable/references/disavow.md +73 -0
- package/skills/agentlinkops-campaigns/references/portable/references/reports.md +53 -0
- package/skills/agentlinkops-campaigns/references/portable/scripts/agentlinkops.py +676 -0
- package/skills/agentlinkops-campaigns/references/portable/scripts/disavow.py +207 -0
- package/skills/agentlinkops-campaigns/references/portable/scripts/migrations/001_crm.sql +45 -0
- package/skills/agentlinkops-campaigns/references/portable/scripts/migrations/002_cloud_events.sql +13 -0
- package/skills/agentlinkops-campaigns/references/portable/scripts/migrations/003_disavow.sql +20 -0
- package/skills/agentlinkops-campaigns/references/portable/scripts/migrations/004_placement_costs.sql +2 -0
- package/skills/agentlinkops-campaigns/references/portable/scripts/report.py +113 -0
- package/skills/agentlinkops-campaigns/references/portable/templates/campaigns.v1.json +65 -0
- package/skills/agentlinkops-connect/SKILL-DEPS.json +104 -0
- package/skills/agentlinkops-connect/SKILL.md +2 -0
- package/skills/agentlinkops-connect/agents/openai.yaml +1 -1
- package/skills/agentlinkops-connect/references/agentlinkops.md +164 -62
- package/skills/agentlinkops-connect/references/placement-workflows.md +19 -0
- package/skills/agentlinkops-crm/SKILL-DEPS.json +381 -0
- package/skills/agentlinkops-crm/SKILL.md +26 -9
- package/skills/agentlinkops-crm/agents/openai.yaml +1 -1
- package/skills/agentlinkops-crm/references/portable/references/cli.md +220 -0
- package/skills/agentlinkops-crm/references/portable/references/disavow.md +73 -0
- package/skills/agentlinkops-crm/references/portable/references/local-crm-draft-handoff.md +76 -0
- package/skills/agentlinkops-crm/references/portable/references/portable-ledger-handoff.md +51 -0
- package/skills/agentlinkops-crm/references/portable/references/reports.md +53 -0
- package/skills/agentlinkops-crm/references/portable/scripts/agentlinkops.py +676 -0
- package/skills/agentlinkops-crm/references/portable/scripts/disavow.py +207 -0
- package/skills/agentlinkops-crm/references/portable/scripts/migrations/001_crm.sql +45 -0
- package/skills/agentlinkops-crm/references/portable/scripts/migrations/002_cloud_events.sql +13 -0
- package/skills/agentlinkops-crm/references/portable/scripts/migrations/003_disavow.sql +20 -0
- package/skills/agentlinkops-crm/references/portable/scripts/migrations/004_placement_costs.sql +2 -0
- package/skills/agentlinkops-crm/references/portable/scripts/outreach-crm-draft.py +121 -0
- package/skills/agentlinkops-crm/references/portable/scripts/portable-handoff.py +197 -0
- package/skills/agentlinkops-crm/references/portable/scripts/report.py +113 -0
- package/skills/agentlinkops-crm/references/portable/templates/campaigns.v1.json +65 -0
- package/skills/agentlinkops-discovery/SKILL-DEPS.json +301 -0
- package/skills/agentlinkops-discovery/SKILL.md +4 -2
- package/skills/agentlinkops-discovery/references/portable/references/cli.md +220 -0
- package/skills/agentlinkops-discovery/references/portable/references/disavow.md +73 -0
- package/skills/agentlinkops-discovery/references/portable/references/discovery-handoff.md +32 -0
- package/skills/agentlinkops-discovery/references/portable/references/reports.md +53 -0
- package/skills/agentlinkops-discovery/references/portable/scripts/agentlinkops.py +676 -0
- package/skills/agentlinkops-discovery/references/portable/scripts/disavow.py +207 -0
- package/skills/agentlinkops-discovery/references/portable/scripts/migrations/001_crm.sql +45 -0
- package/skills/agentlinkops-discovery/references/portable/scripts/migrations/002_cloud_events.sql +13 -0
- package/skills/agentlinkops-discovery/references/portable/scripts/migrations/003_disavow.sql +20 -0
- package/skills/agentlinkops-discovery/references/portable/scripts/migrations/004_placement_costs.sql +2 -0
- package/skills/agentlinkops-discovery/references/portable/scripts/report.py +113 -0
- package/skills/agentlinkops-discovery/references/portable/templates/campaigns.v1.json +65 -0
- package/skills/agentlinkops-discovery/references/saved-backlink-workflows.md +23 -0
- package/src/competitors/contract.js +17 -1
- package/src/context/site-profile.js +34 -121
- package/src/corpus/acquire.js +68 -32
- package/src/corpus/extract.js +147 -0
- package/src/corpus/frontier.js +151 -0
- package/src/discovery/contract.js +8 -0
- package/src/discovery/import.js +13 -1
- package/src/mentions.js +193 -0
- package/src/page-acquisition/acquire.js +50 -0
- package/src/page-acquisition/bytes.js +138 -0
- package/src/page-acquisition/capture.js +11 -0
- package/src/page-acquisition/contracts.js +67 -0
- package/src/page-acquisition/documents.js +166 -0
- package/src/page-acquisition/http.js +307 -0
- package/src/page-acquisition/policy.js +20 -0
- package/src/page-acquisition/recovery.js +164 -0
- package/src/page-acquisition/render-failure.js +82 -0
- package/src/page-extraction/html.js +359 -0
- package/src/page-extraction/index.js +30 -0
- package/src/page-extraction/metadata.js +16 -0
- package/src/response-shaping.js +4 -3
- package/src/tool-views.js +22 -12
- package/src/verifier/fetch.js +4 -339
- package/src/verifier/index.js +81 -23
- package/src/verifier/page-quality.js +14 -0
- package/src/verifier/parser.js +2 -241
- package/src/verifier/readiness.js +64 -13
- package/src/verifier/render-evidence.js +25 -2
- package/src/verifier/target.js +201 -0
- package/src/verifier/transition.js +18 -3
- package/src/verifier/url.js +31 -0
- package/src/watch-crawlability.js +144 -0
- package/skills/content-defingerprinting/SKILL.md +0 -29
- package/skills/content-defingerprinting/scripts/watermarks/README.md +0 -102
- package/skills/content-defingerprinting/scripts/watermarks/UPSTREAM.json +0 -26
- package/skills/content-defingerprinting/scripts/watermarks/revendor.sh +0 -52
- package/skills/content-defingerprinting/scripts/watermarks/vendor/LICENSE.upstream +0 -21
- package/skills/content-defingerprinting/scripts/watermarks/vendor/clean_text.py +0 -96
- package/skills/content-defingerprinting/scripts/watermarks/vendor/common.py +0 -432
- package/skills/content-defingerprinting/scripts/watermarks/vendor/inspect_text.py +0 -86
- package/skills/content-defingerprinting/scripts/watermarks/vendor/score_stylometry.py +0 -460
- package/skills/content-defingerprinting/scripts/watermarks/vendor/text_unicode.py +0 -651
- package/skills/content-defingerprinting/scripts/watermarks/verify-vendor.py +0 -27
- package/skills/content-defingerprinting/scripts/watermarks/wm-scan.py +0 -212
- package/skills/internal-linking-optimizer/SKILL.md +0 -56
- package/skills/internal-linking-optimizer/references/source-prompt.md +0 -76
- package/skills/pre-publish-review/SKILL.md +0 -179
- package/skills/source-cited-content-builder/SKILL.md +0 -56
- package/skills/source-cited-content-builder/references/source-prompt.md +0 -19
- package/skills/source-cited-humanizer/SKILL.md +0 -20
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"skill": "agentlinkops-crm",
|
|
4
|
+
"pack": "product",
|
|
5
|
+
"contractSha256": "e3d29a169dd1ecae2db26b22ab666419c4057e84831653df655f04ae61725e93",
|
|
6
|
+
"sourceManifest": [
|
|
7
|
+
{
|
|
8
|
+
"path": "references/cli.md",
|
|
9
|
+
"sha256": "7b665f9d9b60cdab1f0238b71500f8389e0a6df4ea9777db69af6627a000a766"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"path": "references/disavow.md",
|
|
13
|
+
"sha256": "f8a2ad2c779e15547c6cf6a199b1d4af18ad2ef2c0aa8f27094c00f366c55aaa"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"path": "references/local-crm-draft-handoff.md",
|
|
17
|
+
"sha256": "4fb6f0bc9caf5e4ba79250ea41d4588f9d504b04c63d7e388d8e471b850924b7"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"path": "references/portable-ledger-handoff.md",
|
|
21
|
+
"sha256": "fa4c3c7efea90dd8007e5ba25e4dbb67bfafa8963d91000eb3d58da61b1d9db6"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"path": "references/reports.md",
|
|
25
|
+
"sha256": "361ea12f145daf15c30d35cfaec3f41bfa677fee9c5eabf7dc10b6004cbe617e"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"path": "scripts/agentlinkops.py",
|
|
29
|
+
"sha256": "91d541768f95e17c059396624c153ca86395bccfc565a8bf3470e2e006404e28"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"path": "scripts/disavow.py",
|
|
33
|
+
"sha256": "cae36ad7d9e4aef27510975b4c15a66e5649250f6e76df7ca2bfb025a696432e"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"path": "scripts/migrations/001_crm.sql",
|
|
37
|
+
"sha256": "049fbd38b05c5b8dbab00b6ebee5342b8ed5cf48f65fe6cc1bbf41330ceedf54"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"path": "scripts/migrations/002_cloud_events.sql",
|
|
41
|
+
"sha256": "9040c607408ffd9a168bb3c30431846ddbc7a3429b2a30ba3ecafd4048ccc0c3"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"path": "scripts/migrations/003_disavow.sql",
|
|
45
|
+
"sha256": "ff47da734afaff5ab364dc0ae53c3db58254d0a30ca5250de8172a67f8ec2772"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"path": "scripts/migrations/004_placement_costs.sql",
|
|
49
|
+
"sha256": "e25732a3abd95d54320984068d9a4242ee2d0b89f6c70330a24f63bd0a3671a2"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"path": "scripts/outreach-crm-draft.py",
|
|
53
|
+
"sha256": "f673603b4be3f20df44a9531191241ae2c2e44881b9d82f8fa42fba7c327da7a"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"path": "scripts/portable-handoff.py",
|
|
57
|
+
"sha256": "c4aa4036b41f840bf4eebfbff1e8a6b441f2706d09e027d7eb4f746f4f7eee0d"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"path": "scripts/report.py",
|
|
61
|
+
"sha256": "c7088c3314d0453d62e8a70f0c80f535b219b2ea127ca7d1c0731b216a9cb602"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"path": "skills/agentlinkops-crm/SKILL.md",
|
|
65
|
+
"sha256": "c1131f7abfb76229a9346e7c9ff9cf71e580a540e11bc2caeba969d31235802a"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"path": "skills/agentlinkops-crm/agents/openai.yaml",
|
|
69
|
+
"sha256": "692201114c28fa70250fae09230d15fb182b1e1b3ce84f737bec1773b3fd68b1"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"path": "templates/campaigns.v1.json",
|
|
73
|
+
"sha256": "768e1610d64b82a4e5872c301eb2a537705821b2f01e9f2265c8056f7da4a496"
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"members": [
|
|
77
|
+
{
|
|
78
|
+
"path": "SKILL.md",
|
|
79
|
+
"sha256": "1ac0d2c4a1a1c0b0f1f18302577656d6f3e8e22c7329ecba92b3951e78715867"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"path": "agents/openai.yaml",
|
|
83
|
+
"sha256": "692201114c28fa70250fae09230d15fb182b1e1b3ce84f737bec1773b3fd68b1"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"path": "references/portable/references/cli.md",
|
|
87
|
+
"sha256": "55ad759a920ed5bb683b0354739b7a929a0d733e987c6164977ea466ff606955"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"path": "references/portable/references/disavow.md",
|
|
91
|
+
"sha256": "47b4b335f7695209ad0758fc19f3b23b38792032a6850277e563a9b7d80eabf1"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"path": "references/portable/references/local-crm-draft-handoff.md",
|
|
95
|
+
"sha256": "b8e027add77f9bbd3c71990a8b3d8ec45e99ceae2b7f0d8eb33697cfcd0eae82"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"path": "references/portable/references/portable-ledger-handoff.md",
|
|
99
|
+
"sha256": "0942083b6d9c0c9604623536a7e7b9c44341c7cc5bfde74fa9abdffbf2fbcf62"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"path": "references/portable/references/reports.md",
|
|
103
|
+
"sha256": "4fc4791d03c7497f0193fb3d6b4114095aad4d551bb063c8c9e9c485f0c8ca56"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"path": "references/portable/scripts/agentlinkops.py",
|
|
107
|
+
"sha256": "91d541768f95e17c059396624c153ca86395bccfc565a8bf3470e2e006404e28"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"path": "references/portable/scripts/disavow.py",
|
|
111
|
+
"sha256": "cae36ad7d9e4aef27510975b4c15a66e5649250f6e76df7ca2bfb025a696432e"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"path": "references/portable/scripts/migrations/001_crm.sql",
|
|
115
|
+
"sha256": "049fbd38b05c5b8dbab00b6ebee5342b8ed5cf48f65fe6cc1bbf41330ceedf54"
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"path": "references/portable/scripts/migrations/002_cloud_events.sql",
|
|
119
|
+
"sha256": "9040c607408ffd9a168bb3c30431846ddbc7a3429b2a30ba3ecafd4048ccc0c3"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"path": "references/portable/scripts/migrations/003_disavow.sql",
|
|
123
|
+
"sha256": "ff47da734afaff5ab364dc0ae53c3db58254d0a30ca5250de8172a67f8ec2772"
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"path": "references/portable/scripts/migrations/004_placement_costs.sql",
|
|
127
|
+
"sha256": "e25732a3abd95d54320984068d9a4242ee2d0b89f6c70330a24f63bd0a3671a2"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"path": "references/portable/scripts/outreach-crm-draft.py",
|
|
131
|
+
"sha256": "f673603b4be3f20df44a9531191241ae2c2e44881b9d82f8fa42fba7c327da7a"
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"path": "references/portable/scripts/portable-handoff.py",
|
|
135
|
+
"sha256": "c4aa4036b41f840bf4eebfbff1e8a6b441f2706d09e027d7eb4f746f4f7eee0d"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"path": "references/portable/scripts/report.py",
|
|
139
|
+
"sha256": "c7088c3314d0453d62e8a70f0c80f535b219b2ea127ca7d1c0731b216a9cb602"
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"path": "references/portable/templates/campaigns.v1.json",
|
|
143
|
+
"sha256": "768e1610d64b82a4e5872c301eb2a537705821b2f01e9f2265c8056f7da4a496"
|
|
144
|
+
}
|
|
145
|
+
],
|
|
146
|
+
"edges": [
|
|
147
|
+
{
|
|
148
|
+
"from": "references/portable/references/cli.md",
|
|
149
|
+
"target": "references/portable/references/disavow.md",
|
|
150
|
+
"kind": "required-bundled"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"from": "references/portable/references/cli.md",
|
|
154
|
+
"target": "references/portable/references/reports.md",
|
|
155
|
+
"kind": "required-bundled"
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"from": "references/portable/references/cli.md",
|
|
159
|
+
"target": "references/portable/scripts/agentlinkops.py",
|
|
160
|
+
"kind": "required-bundled"
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"from": "references/portable/references/cli.md",
|
|
164
|
+
"target": "references/portable/scripts/agentlinkops.py",
|
|
165
|
+
"kind": "required-bundled"
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"from": "references/portable/references/cli.md",
|
|
169
|
+
"target": "references/portable/scripts/agentlinkops.py",
|
|
170
|
+
"kind": "required-bundled"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"from": "references/portable/references/cli.md",
|
|
174
|
+
"target": "references/portable/scripts/agentlinkops.py",
|
|
175
|
+
"kind": "required-bundled"
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"from": "references/portable/references/cli.md",
|
|
179
|
+
"target": "references/portable/scripts/agentlinkops.py",
|
|
180
|
+
"kind": "required-bundled"
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"from": "references/portable/references/cli.md",
|
|
184
|
+
"target": "references/portable/scripts/agentlinkops.py",
|
|
185
|
+
"kind": "required-bundled"
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"from": "references/portable/references/cli.md",
|
|
189
|
+
"target": "references/portable/scripts/agentlinkops.py",
|
|
190
|
+
"kind": "required-bundled"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"from": "references/portable/references/cli.md",
|
|
194
|
+
"target": "references/portable/scripts/agentlinkops.py",
|
|
195
|
+
"kind": "required-bundled"
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"from": "references/portable/references/disavow.md",
|
|
199
|
+
"target": "references/portable/scripts/agentlinkops.py",
|
|
200
|
+
"kind": "required-bundled"
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"from": "references/portable/references/disavow.md",
|
|
204
|
+
"target": "references/portable/scripts/agentlinkops.py",
|
|
205
|
+
"kind": "required-bundled"
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"from": "references/portable/references/disavow.md",
|
|
209
|
+
"target": "references/portable/scripts/agentlinkops.py",
|
|
210
|
+
"kind": "required-bundled"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"from": "references/portable/references/disavow.md",
|
|
214
|
+
"target": "references/portable/scripts/agentlinkops.py",
|
|
215
|
+
"kind": "required-bundled"
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"from": "references/portable/references/disavow.md",
|
|
219
|
+
"target": "references/portable/scripts/agentlinkops.py",
|
|
220
|
+
"kind": "required-bundled"
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
"from": "references/portable/references/local-crm-draft-handoff.md",
|
|
224
|
+
"target": "references/portable/scripts/outreach-crm-draft.py",
|
|
225
|
+
"kind": "required-bundled"
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"from": "references/portable/references/local-crm-draft-handoff.md",
|
|
229
|
+
"target": "references/portable/scripts/outreach-crm-draft.py",
|
|
230
|
+
"kind": "required-bundled"
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
"from": "references/portable/references/portable-ledger-handoff.md",
|
|
234
|
+
"target": "references/portable/scripts/portable-handoff.py",
|
|
235
|
+
"kind": "required-bundled"
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
"from": "references/portable/references/reports.md",
|
|
239
|
+
"target": "references/portable/scripts/agentlinkops.py",
|
|
240
|
+
"kind": "required-bundled"
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"from": "references/portable/references/reports.md",
|
|
244
|
+
"target": "references/portable/scripts/agentlinkops.py",
|
|
245
|
+
"kind": "required-bundled"
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"from": "references/portable/scripts/agentlinkops.py",
|
|
249
|
+
"target": "references/portable/scripts/disavow.py",
|
|
250
|
+
"kind": "required-bundled"
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"from": "references/portable/scripts/agentlinkops.py",
|
|
254
|
+
"target": "references/portable/scripts/migrations/001_crm.sql",
|
|
255
|
+
"kind": "required-bundled"
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
"from": "references/portable/scripts/agentlinkops.py",
|
|
259
|
+
"target": "references/portable/scripts/report.py",
|
|
260
|
+
"kind": "required-bundled"
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
"from": "references/portable/scripts/agentlinkops.py",
|
|
264
|
+
"target": "references/portable/templates/campaigns.v1.json",
|
|
265
|
+
"kind": "required-bundled"
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"from": "references/portable/scripts/outreach-crm-draft.py",
|
|
269
|
+
"target": "references/portable/scripts/portable-handoff.py",
|
|
270
|
+
"kind": "required-bundled"
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
"from": "references/portable/scripts/outreach-crm-draft.py",
|
|
274
|
+
"target": "references/portable/scripts/portable-handoff.py",
|
|
275
|
+
"kind": "required-bundled"
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"from": "SKILL.md",
|
|
279
|
+
"target": "../../references/recipes/placement-reconciliation.md",
|
|
280
|
+
"kind": "optional-selected",
|
|
281
|
+
"selection": "agentlinkops agent setup --recipe placement-reconciliation"
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"from": "SKILL.md",
|
|
285
|
+
"target": "references/portable/references/cli.md",
|
|
286
|
+
"kind": "required-bundled"
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
"from": "SKILL.md",
|
|
290
|
+
"target": "references/portable/references/cli.md",
|
|
291
|
+
"kind": "required-bundled"
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
"from": "SKILL.md",
|
|
295
|
+
"target": "references/portable/references/disavow.md",
|
|
296
|
+
"kind": "required-bundled"
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"from": "SKILL.md",
|
|
300
|
+
"target": "references/portable/references/local-crm-draft-handoff.md",
|
|
301
|
+
"kind": "required-bundled"
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
"from": "SKILL.md",
|
|
305
|
+
"target": "references/portable/references/portable-ledger-handoff.md",
|
|
306
|
+
"kind": "required-bundled"
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"from": "SKILL.md",
|
|
310
|
+
"target": "references/portable/references/reports.md",
|
|
311
|
+
"kind": "required-bundled"
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
"from": "SKILL.md",
|
|
315
|
+
"target": "references/portable/scripts/agentlinkops.py",
|
|
316
|
+
"kind": "required-bundled"
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
"from": "SKILL.md",
|
|
320
|
+
"target": "references/portable/scripts/agentlinkops.py",
|
|
321
|
+
"kind": "required-bundled"
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
"from": "SKILL.md",
|
|
325
|
+
"target": "references/portable/scripts/outreach-crm-draft.py",
|
|
326
|
+
"kind": "required-bundled"
|
|
327
|
+
}
|
|
328
|
+
],
|
|
329
|
+
"externalRuntime": [
|
|
330
|
+
{
|
|
331
|
+
"kind": "external-runtime",
|
|
332
|
+
"id": "agentlinkops-cli",
|
|
333
|
+
"commands": [
|
|
334
|
+
"agentlinkops",
|
|
335
|
+
"linktrail",
|
|
336
|
+
"node cli/agentlinkops.mjs"
|
|
337
|
+
],
|
|
338
|
+
"availability": "Install separately for a standalone skill; inspect the installed version and help before using a local command. Hosted discovery does not install local CLI features."
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
"kind": "external-runtime",
|
|
342
|
+
"id": "python-standard-library",
|
|
343
|
+
"minimumVersion": "3.10",
|
|
344
|
+
"imports": [
|
|
345
|
+
"argparse",
|
|
346
|
+
"contextlib",
|
|
347
|
+
"csv",
|
|
348
|
+
"datetime",
|
|
349
|
+
"decimal",
|
|
350
|
+
"errno",
|
|
351
|
+
"fcntl",
|
|
352
|
+
"hashlib",
|
|
353
|
+
"html",
|
|
354
|
+
"importlib",
|
|
355
|
+
"io",
|
|
356
|
+
"ipaddress",
|
|
357
|
+
"json",
|
|
358
|
+
"os",
|
|
359
|
+
"pathlib",
|
|
360
|
+
"re",
|
|
361
|
+
"sqlite3",
|
|
362
|
+
"stat",
|
|
363
|
+
"sys",
|
|
364
|
+
"tempfile",
|
|
365
|
+
"time",
|
|
366
|
+
"urllib"
|
|
367
|
+
]
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"kind": "external-runtime",
|
|
371
|
+
"id": "agentlinkops-hosted-mcp",
|
|
372
|
+
"availability": "Hosted commands require separately connected customer access and current catalog exposure. Installing a skill alone does not establish access."
|
|
373
|
+
}
|
|
374
|
+
],
|
|
375
|
+
"privateExcluded": [
|
|
376
|
+
"private Fleet/account files",
|
|
377
|
+
"customer records and credentials",
|
|
378
|
+
"unselected or uncleared publisher material"
|
|
379
|
+
],
|
|
380
|
+
"coverage": "Assembler records source hashes; independent archive verification recomputes required members, supported links/imports and declared resources. Optional selections and external runtimes remain separate."
|
|
381
|
+
}
|
|
@@ -1,26 +1,30 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agentlinkops-crm
|
|
3
3
|
description: Manage the AgentLinkOps local backlink and outreach CRM, user-selected disavow lists, branded HTML reports and cloud event sync. Use for durable campaign records, link reporting or explicit disavow-list management; does not connect a mailbox, send outreach or upload disavow files.
|
|
4
|
-
allowed-tools: Read Bash(python3
|
|
4
|
+
allowed-tools: Read Bash(python3 references/portable/scripts/agentlinkops.py *) Bash(python3 references/portable/scripts/outreach-crm-draft.py *) Bash(agentlinkops *)
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
**
|
|
7
|
+
**The CLI's local surface is the ledger file.** `.agentlinkops/links.jsonl` in the user's repository (or a `.linktrail/` directory from an earlier install, read until `agentlinkops migrate` renames it) declares the links they expect, want and have earned. `agentlinkops check` uses the shared verifier without an account; checking a publisher still requires a read-only network fetch.
|
|
8
|
+
|
|
9
|
+
The full plugin includes the CLI and its runtime dependencies. A standalone skill includes the Python helper and required references, but needs a separately installed CLI for ledger commands. Check `agentlinkops --version` and help before using local features; hosted command refresh does not install them. The CLI needs Node 22 or newer; the Python helper needs Python 3.10 or newer.
|
|
10
|
+
|
|
11
|
+
This CRM is an optional adapter beside CSV and JSONL. When a user already keeps links here, `agentlinkops adopt <db>` reads the database without changing its schema and previews ledger entries unless `--write` is given. Offer this CRM when the user wants contacts and outreach activity beside their links, or already has records in it.
|
|
8
12
|
|
|
9
13
|
To record a link in the ledger: `agentlinkops add --source URL --target URL --intent expected [--anchor TEXT] [--ref ID] [--note TEXT]` (`--intent wanted` for a link not yet earned; `agentlinkops init` first in a repository without `.agentlinkops/`). `agentlinkops check` then verifies every expected link and returns 0 when no expected placement is conclusively absent, 1 when one is observed absent with complete evidence, 2 on a usage or ledger error. Unknown is nonfailing by default; `--fail-on-unknown` returns 1 for an unknown result in text or JSON output.
|
|
10
14
|
|
|
11
|
-
Use the deterministic Python helper at
|
|
15
|
+
Use the deterministic Python helper at `references/portable/scripts/agentlinkops.py`, resolved relative to this skill's directory. It requires Python 3.10+ and only its standard library. Run `--help` for the command surface. Keep the database outside the plugin installation directory; updates can replace that directory.
|
|
12
16
|
|
|
13
|
-
Read [the CLI contract](
|
|
17
|
+
Read [the CLI contract](references/portable/references/cli.md) for fields and examples. The CRM contains products, campaigns, contacts, opportunities, activities and placements. Use explicit stable IDs and upsert a record to update it. Bulk records of one entity are committed together. Save source URLs and observed dates alongside contact and qualification evidence.
|
|
14
18
|
|
|
15
|
-
When the user asks to manage a disavow list, read [the disavow contract](
|
|
19
|
+
When the user asks to manage a disavow list, read [the disavow contract](references/portable/references/disavow.md). Scope every operation to the exact user-selected URL-prefix property. Preserve provenance and the user's explicit rule choices. Do not decide to disavow a site from a low score, inaccessible page or generic risk label. The helper imports and exports local files; it has no Google upload capability. Reimporting a prior file does not reactivate rules the user disabled.
|
|
16
20
|
|
|
17
|
-
For a shareable placement report, read [the report contract](
|
|
21
|
+
For a shareable placement report, read [the report contract](references/portable/references/reports.md). Select the requested project and brand/title. Reports include observed placement data by default. Include local notes or cost amounts only when the user requests that content; those fields may contain private commercial context. The output is self-contained HTML, not a generated PDF. A report timestamp does not make its underlying observations fresh.
|
|
18
22
|
|
|
19
23
|
Preserve an existing CRM's workspace binding. Never initialize over an unrelated database, rewrite migration checksums, delete data to resolve a migration error, or reset a sync cursor to hide an expired feed. The helper backs up existing databases before applying new migrations.
|
|
20
24
|
|
|
21
25
|
Track outreach through `external_message_id`, activity kind, time and outcome. Keep email bodies and mailbox credentials in the user's existing email system. Local notes are not a secret store. CSV export neutralizes spreadsheet formula prefixes; JSON is the lossless interchange format.
|
|
22
26
|
|
|
23
|
-
For ledger cloud setup, follow [Connect the ledger CLI](
|
|
27
|
+
For ledger cloud setup, follow [Connect the ledger CLI](references/portable/references/cli.md#connect-the-ledger-cli-to-an-existing-project): create a scoped credential in the workspace, supply it through the process environment, verify the existing project with `connect`, then review `sync --dry-run`. An explicit ledger-ID selection keeps unrelated local records out of uploads. MCP OAuth credentials stay in the MCP client.
|
|
24
28
|
|
|
25
29
|
For recurring cloud changes, use the host's already connected AgentLinkOps tools when available. The standalone `sync` helper requires `AGENTLINKOPS_API_URL` and `AGENTLINKOPS_API_KEY` in its process environment (the `LINKTRAIL_` spellings are still accepted with a warning during the pilot compatibility window). Never request a key in chat or place it in command arguments, source files or CRM notes. Account connection and permissions are separate from local CRM utility. Explain unavailable access neutrally and preserve completed local work.
|
|
26
30
|
|
|
@@ -29,7 +33,7 @@ Sync updates `cloud_state` on placements and preserves local status, notes and o
|
|
|
29
33
|
Recipes are optional. Choose `agentlinkops agent setup --recipe placement-reconciliation` before reading `../../references/recipes/placement-reconciliation.md` for an exact source and destination, retained evidence, checkpoints and optional monitoring. Removing the recipe preserves your local records and existing reconciliation process.
|
|
30
34
|
|
|
31
35
|
For a draft-only file from an existing frozen report, read [portable ledger
|
|
32
|
-
handoff](
|
|
36
|
+
handoff](references/portable/references/portable-ledger-handoff.md). It needs explicit customer
|
|
33
37
|
workspace/project/site and external-ID mappings, verifies the report hash and
|
|
34
38
|
refuses mismatched sites or conflicting output. It does not verify hosted grants,
|
|
35
39
|
import into a vendor or send messages. Keep replied, suppressed and unknown facts
|
|
@@ -37,7 +41,20 @@ separate from monitoring state; a saved file does not establish destination
|
|
|
37
41
|
readback or permission to send.
|
|
38
42
|
|
|
39
43
|
When the user selects an existing local Outreach CRM with `projects/<project>/drafts`,
|
|
40
|
-
use [local CRM draft handoff](
|
|
44
|
+
use [local CRM draft handoff](references/portable/references/local-crm-draft-handoff.md) for exact
|
|
41
45
|
body/manifest saving, interrupted-save recovery and readback. This adapter preserves
|
|
42
46
|
the complete original request and explicit site binding. It does not import contacts,
|
|
43
47
|
check current sender authority, activate sequences or provide a native vendor API.
|
|
48
|
+
|
|
49
|
+
## Several recipients on one hosted opportunity
|
|
50
|
+
|
|
51
|
+
When the authenticated catalog lists `save_campaign_participation` and
|
|
52
|
+
`record_campaign_participation_outcome`, the limited operator pilot can bind each
|
|
53
|
+
recipient's saved contact, campaign and opaque source record to one existing
|
|
54
|
+
opportunity. Read the participation and contact revisions before recording a dated
|
|
55
|
+
source event. Reuse the event identity after interruption and read the saved result.
|
|
56
|
+
A recipient reply or decline concerns that recipient; independent placement evidence
|
|
57
|
+
and monitoring remain on the shared opportunity. Preserve its saved contact association and
|
|
58
|
+
legacy reference. Do not duplicate watches or invent source URLs. If these commands
|
|
59
|
+
are absent, keep the additional recipient records in the current CRM and report the
|
|
60
|
+
held mapping. Sender credentials, bodies, sequences and suppression stay external.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: AgentLinkOps CRM
|
|
3
|
-
short_description: Manage
|
|
3
|
+
short_description: "Manage local CRM, disavow lists, reports and cloud event sync"
|
|
4
4
|
policy:
|
|
5
5
|
allow_implicit_invocation: true
|
|
6
6
|
dependencies:
|