Commit graph

34 commits

Author SHA1 Message Date
27fbe1f313
port to Opencode: 140 skills, 14 agents, 19 MCP configs
Port claude-for-legal plugin collection to Opencode skills format.

Changes:
- 140 skills ported to opencode-for-legal/skills/ (namespaced naming)
- 14 agents converted to Opencode subagent format
- 5 managed-agent cookbooks flattened to single agents
- 19 MCP servers converted to opencode.json format
- 11 practice-profile templates ported (CLAUDE.md → PROFILE.md)
- Remote skill catalog (index.json) for Opencode URL discovery
- Setup wizard skill for first-time configuration

License compliance:
- Original source preserved in upstream/ per Apache 2.0 §4(b)
- NOTICE.md documents derivative work and upstream attribution
- LICENSE copied into port directory
- README rewritten with port disclaimer and trademark notice

Platform updates:
- Removed all Claude Code/Cowork product-specific references
- Config paths updated to ~/.config/opencode/opencode-for-legal/
- Command syntax: /plugin:skill → opencode auto-loading
- Agent frontmatter converted (tools: → mode: subagent)
2026-06-13 15:15:53 +02:00
Tobin South
248331e0fe
Merge pull request #56 from dazzaji/fix/handoff-regex-truncation
Fix handoff_request extractor truncating nested payloads at the first `}`
2026-05-28 17:48:21 -07:00
Tobin South
efc8d4edf9
Merge pull request #41 from akhilesharora/fix/deploy-mktemp-template
Fix mktemp template so deploy-managed-agent.sh runs on Linux
2026-05-28 17:48:17 -07:00
Dazza Greenwood
88c8906831
Fix handoff_request extractor truncating nested payloads at the first }
`HANDOFF_RE` used a non-greedy `.*?\}`, so the match ended at the first
closing brace. Every real `handoff_request` nests objects (`payload`,
and `payload.params`), so the captured substring was truncated
mid-object and `json.loads` raised — `extract_handoff` rejected every
well-formed handoff as `invalid_json` before the target allowlist and
schema validators ever ran. In practice the cross-agent handoff path
did not function for any realistic payload.

Replace the full-match regex with a start anchor (`HANDOFF_START_RE`)
and extract the complete object with `json.JSONDecoder().raw_decode`,
which is string- and brace-nesting aware and returns exactly one
complete JSON value plus its end offset. Multi-line payloads now parse
as well. The audit log's `raw_len` field, previously `len(m.group(0))`,
is now derived from the decoded object's span (`end - m.start()`), and
its three later uses on the target/schema/params rejection paths are
updated to the new variable. Downstream validation — target allowlist,
payload and per-intent schemas, sanitize/frame — is unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 14:56:41 -07:00
Matt Piccolella
b0aeeba7fe
Merge pull request #65 from anthropics/tobin/remove-unused-references
Remove unused references
2026-05-22 08:55:53 -07:00
tobin
c1998de2e6
Remove unused references 2026-05-22 15:53:42 +00:00
Matt Piccolella
1657cb355a
Merge pull request #60 from anthropics/add-cocounsel-display-name
Add displayName to cocounsel-legal marketplace entry
2026-05-21 09:30:56 -07:00
Matt Piccolella
53b8fd444d
Add displayName to cocounsel-legal marketplace entry 2026-05-21 09:28:32 -07:00
Matt Piccolella
2859912482
Merge pull request #59 from anthropics/add-plugin-display-names
Add displayName to all marketplace plugin entries
2026-05-21 09:14:48 -07:00
Matt Piccolella
448cedf677
Add displayName to all marketplace plugin entries 2026-05-21 09:13:17 -07:00
Matt Piccolella
cd76401457
Merge pull request #54 from dlaw-ant/dlaw/cookbook-attribution
Stamp metadata.anthropic_cookbook on managed-agent deploys
2026-05-20 18:20:27 -07:00
Daniel Law
c705e020f3
Stamp metadata.anthropic_cookbook on managed-agent deploys 2026-05-20 23:34:07 +00:00
Akhilesh Arora
bf6aea18bb
Fix mktemp template so deploy-managed-agent.sh runs on Linux
GNU mktemp wants 3+ X's in a -t template. The bare `mktemp -t skillcache`
and `mktemp -t skill` calls worked on macOS but crash on Linux before
the script does anything. test-cookbooks.sh fails the same way for all
5 cookbooks because it calls deploy --dry-run.

Adding .XXXXXX is portable: GNU expands the X's, BSD treats them as
prefix. Confirmed on Ubuntu 24.04 / coreutils 9.4: test-cookbooks goes
0/5 -> 5/5.
2026-05-16 20:26:41 +02:00
Tobin South
4d55f53962
Post-merge cleanup: whitespace, doc sync, canonical skill names, root CLAUDE.md (#33)
Cleanup pass following the CoCounsel merge (#4) and Lexis removal (#5):
- Normalize whitespace and JSON indentation across plugin metadata files
- Sync marketplace.json with plugin.json (ip-legal description, Courtroom5 title field)
- Add missing ai-inventory and invention-intake rows to README skill reference
- Replace stale short-form skill names in customize/cold-start SKILL.md prose with canonical directory names across 11 plugins (same bug class as the /setup -> /cold-start-interview QA fix)
- Fix FYY -> FYI typo and a phantom WebFetch claim in launch-radar docs
- Address review findings: line-wrapped /check-claims, /renewals-due -> /renewal-tracker, stale /setup in references/, agent.yaml comment contradiction, redundant 'intake intake'
- Add root CLAUDE.md with validation conventions (claude plugin validate, I1-I11 invariants, frontmatter requirements) and a marketplace.json description + $schema

No behavioral changes. claude plugin validate passes clean.
2026-05-15 14:10:09 -07:00
Tobin South
9cecd91b0f
Merge pull request #5 from anthropics/markpike/remove-lexis
Remove Lexis references at partner request
2026-05-12 11:58:49 -07:00
Mark Pike
210fd7a6cf
Remove Lexis references at partner request 2026-05-12 11:45:01 -07:00
Tobin South
993f6619fc
Merge pull request #4 from anthropics/tobin/add-cocounsel-legal
Add CoCounsel Legal partner plugin under external_plugins/
2026-05-12 09:34:18 -07:00
tobin
7603d0a8c1
Fix CoCounsel Legal author email to cocounselsupport@tr.com 2026-05-12 09:26:26 -07:00
tobin
d29d2ce0ca
Add CoCounsel Legal partner plugin under external_plugins/
Adds the Thomson Reuters CoCounsel Legal plugin (Westlaw Deep Research)
as a vendor-maintained plugin under a new external_plugins/ directory,
following the partner-built layout used elsewhere.

- external_plugins/cocounsel-legal/: plugin.json, .mcp.json (HTTP MCP
  server with OAuth), deep-research skill, vendor README
- .claude-plugin/marketplace.json: register cocounsel-legal pointing at
  ./external_plugins/cocounsel-legal with Thomson Reuters as author
- README.md: document external_plugins/ in the repo layout, add an
  'External / partner-built' section, list the CoCounsel Legal connector,
  and add a skill reference entry
2026-05-12 09:00:40 -07:00
Matt Piccolella
52e06d17db
Merge pull request #3 from anthropics/mattpic-ant-patch-1
Update README.md
2026-05-12 08:58:54 -07:00
Matt Piccolella
f30ffa40b3
Update QUICKSTART.md 2026-05-12 08:55:59 -07:00
Matt Piccolella
fae1e3ecb7
Update README.md 2026-05-12 08:54:52 -07:00
Matt Piccolella
53fbd79bc2
Update README.md 2026-05-12 08:51:16 -07:00
Matt Piccolella
5244bbc376
Update README.md
Add video recording to README
2026-05-12 08:50:24 -07:00
Matt Piccolella
2d3259870a
Merge pull request #2 from anthropics/markpike/launch-morning-fixes
Launch morning fixes from overnight QA re-run
2026-05-12 08:33:55 -07:00
Mark Pike
942961fc1f
Launch morning fixes from QA re-run
Four findings from the overnight QA re-run against the post-fix build:

1. renewal-register.yaml storage path. Was references/renewal-register.yaml
   inside the skill directory, which lives in the plugin cache and gets
   wiped on update. Moved to the config directory path that survives
   updates. Silent data loss bug for any user who built up a register.

2. /setup references. Docs pointed at /<plugin>:setup which does not
   exist (the command is /cold-start-interview). QUICKSTART.md, two
   SKILL.md files, and a commented-out template all had the stale
   reference. This was the only hard give-up moment in the cold-install
   path.

3. False-premise defense promoted to all 12 plugins. corporate-legal
   had the strongest anti-fabrication rule in the suite: decline to
   characterize a statute you cannot retrieve. It was only in 1 of 12.
   Generalized and added to the shared guardrail block in all 12.

4. Currency-watch corrections in ai-governance-legal. The EU Digital
   Omnibus entry said high-risk deferrals were still being negotiated
   in the same bullet that cited the May 7 agreement that settled them.
   Illinois HB 3773 was marked pending when it has been in force since
   Jan 1, 2026, and was conflated with the distinct AIPA.
2026-05-12 06:44:02 -07:00
Matt Piccolella
d96c61846e
Merge pull request #1 from anthropics/fix/orchestrate-handoff-param-patterns
Tighten handoff param patterns; ad-hoc questions use the practice profile
2026-05-11 15:59:46 -07:00
Matt Piccolella
78abd16e99
Add CLA workflow, CONTRIBUTING note, and align copyright header format 2026-05-11 15:55:23 -07:00
Matt Piccolella
4944122c01
Add Code of Conduct 2026-05-11 14:29:18 -07:00
Matt Piccolella
22649cf9aa
Add copyright and SPDX license headers to scripts 2026-05-11 14:02:12 -07:00
Matt Piccolella
cf268c9a53
Bump all plugins to 1.0.0 for public launch 2026-05-11 13:54:32 -07:00
Matt Piccolella
68ed72ecba
Ad-hoc questions use the practice profile without invoking a skill
The rich practice context from setup — jurisdiction footprint, risk
posture, playbook positions — was only accessible through structured
skills. A lawyer asking a quick question in the plugin's domain got a
generalist answer.

Now the plugin CLAUDE.md instructs Claude to read the practice profile
and apply the plugin's guardrails for ANY question in the domain, not
just skill invocations. A configured plugin feels like a colleague who
already knows your practice, not a form you fill out. The skills are
the structured workflows; this is everything in between.
2026-05-11 13:53:00 -07:00
Matt Piccolella
f7ccda739f
Tighten handoff param patterns to block prompt injection via spaces
Param values for matter_id and clause are interpolated directly into the
steering-prompt templates. Their patterns previously permitted spaces, which
would let a hostile document smuggle a natural-language sentence into the
prompt through a field that looks like an ID. Restrict both to slug shape
(no spaces); descriptive context belongs in the note/event fields, which are
never interpolated and are wrapped in the data frame.

Also render templates via format_map with an empty-string default so an
optional param the template references (e.g. playbook_monitor's clause)
degrades gracefully instead of raising KeyError, and ignore __pycache__.
2026-05-11 13:50:41 -07:00
Matt Piccolella
d541734b08
Initial commit of Claude for Legal 2026-05-11 13:44:26 -07:00