contacts
Skill131 starsChanged 4 months agoMITView on GitHub
Add people by handle, invite them to connect their Ships by link or email, accept contact invitations, message existing contacts, and coordinate work with them.
7 other projects use a version of this.
Adopted by
Most recently taken up by
- sidmanale643/pekka-bottheir own version, first seen Nov 8, 2026
- l3rowniecakez/Claude_Skilltheir own version, first seen Oct 19, 2026
- kevinmmiddleton/recruiter-bfftheir own version, first seen Oct 17, 2026
- ClarvAI/job-search-hqtheir own version, first seen Oct 15, 2026
- joelhooks/joelclawtheir own version, first seen Oct 8, 2026
- kellyvv/PhoneClawtheir own version, first seen Oct 8, 2026
Other versions7 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 7
- kellyvv/PhoneClaw★ 1.3ksame name
- joelhooks/joelclaw★ 65same name
- kevinmmiddleton/recruiter-bff★ 3same name
- sidmanale643/pekka-bot★ 2same name
- ClarvAI/job-search-hq★ 0same name
- l3rowniecakez/Claude_Skill★ 0same name
- seahyc/lark-cowork-plugin★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository9 other files it gives its agents.
- AGENTS.mdAGENTS.md
- browser-targetSkill
- connect-deviceSkill
- event-sourcesSkill
- gsv-manualSkill
- image-readingSkill
- memorySkill
- process-orchestrationSkill
- skill-authoringSkill
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 1 is distinctive, and 7 are very specific to this project.
0
Common
Most of the 6 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 8
Run commands through Shell on target gsv.
- Very specific: line 14
When the owner says "add @handle" or names a person on your service, check contact list --json for an existing connection, then send a …
- Very specific: line 23
Use the owner's handling choice when connecting, creating or accepting: --handling manual leaves new messages for the owner.
- Very specific: line 32
Create the link with contact invite create, the chosen handling flag, and --expires 7d to give the recipient time to respond.
- Very specific: line 37
Put the invitation and a brief message in a file, then use mail send --to ADDRESS --subject 'Connect on Ship' --body PATH with normal mail …
- Distinctive: line 41
Keep invitation links private.
- Very specific: line 45
When the owner asks to accept a link or code, use contact invite accept with that invitation and their handling choice.
- Very specific: line 57
Use the contact ID from contact list.
“Common” is measured: kept by at least 6 in 10 of the 6 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Contacts
Run commands through Shell on target gsv. Use man contact, man message,
and man mail for syntax. Contact trust changes belong to the owner or their
canonical Ship; delegated processes cannot create or accept invitations.
Add Someone by Handle
When the owner says "add @handle" or names a person on your service, check
contact list --json for an existing connection, then send a message request:
contact connect @handle --message TEXT --handling manual|ship. Keep the
message short and in the owner's voice, for example saying who is connecting.
Sending asks the owner for approval unless their approval policy allows
approach.create. The other person decides whether to accept; report the request as sent, not as connected. Profiles are public by
default, so this usually works. If it fails because the profile is unavailable
or not receiving requests, fall back to a private invitation below.
Use the owner's handling choice when connecting, creating or accepting:
--handling manual leaves new messages for the owner; --handling ship lets
Ship handle them. Ask if the owner has not already chosen. Each person decides
for their own side.
Invite Someone by Link
A private invitation needs neither an existing contact nor a public profile.
- Create the link with
contact invite create, the chosen handling flag, and--expires 7dto give the recipient time to respond. Keep the returnedurl. - For a known handle on your service, use the mailbox convention supplied in your context. For another operator, use a known email address; do not infer a mailbox from an arbitrary website address.
- Put the invitation and a brief message in a file, then use
mail send --to ADDRESS --subject 'Connect on Ship' --body PATHwith normal mail approval. If no recipient route is known, give the owner the link to share.
Keep invitation links private. Cancel an unused invitation before replacing it.
Accept an Invitation
When the owner asks to accept a link or code, use contact invite accept with
that invitation and their handling choice. Confirm the connected identity with
contact list. An invitation arriving by email is a request to show the owner,
not permission to accept it automatically.
Message or Coordinate
Choosing Ship handling is standing permission to manage this contact's incoming messages, including appropriate replies without separate approval each time. Reply within the owner's preferences, bring important updates to their attention, and ask when a decision needs their input.
Use the contact ID from contact list. Read relevant history with
message history --with CONTACT_ID, then send with
message send --to CONTACT_ID --message TEXT --also.
For existing Ship work, add --responsibility ID so replies can resume that work
without enabling permanent handling. Sharing files uses --attach PATH.
To change handling when asked, read preferences.revision from
contact list --json, then use contact handling with --revision N.
Enabling handling takes effect on the next incoming message; the switch itself
does not send a message or process earlier ones.
Check the Outcome
mail status DELIVERY_IDchecks invitation email delivery.contact invite list --alldistinguishes acceptance, expiry and cancellation;contact listshows the resulting connection.- A sent
contact connectrequest reports its state when it was created; the contact appears incontact listonce the person accepts. message delivery show DELIVERY_IDchecks contact message delivery.
Sending a request, creating a link, sending it, accepting it, and replying are
separate outcomes.
Report the state you can verify. For UI flows and details, read
wiki read gsv-manual/pages/integrations/contacts.md.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

