teammate-data
Skill0 starsChanged 32 days agoMITView on GitHub
Bulk-manage the people behind the signatures in Scribe (smart-field values, adding or removing teammates and alias emails, and the field definitions themselves), including which writes silently do nothing because an integration owns the field. Use for "update everyone's job title / phone / office address", onboarding or offboarding, or adding a new merge field.
In this repository6 other files it gives its agents.
- marketing-campaignsSkill
- signature-analyticsSkill
- signature-authoringSkill
- signature-rolloutSkill
- signature-troubleshootingSkill
- workspace-auditSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 1 is distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 16
The team list: If a Google/Microsoft directory integration drives teammates, create_teammate, delete_teammate, and every email write return …
- Distinctive: line 46
A 200 does not mean the value changed: After a bulk run, re-read the affected teammates and diff against what you sent, then report …
- Very specific: line 78
Verify the outcome where it counts: preview_signature for layout, get_signature_html for what one recipient actually receives.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Managing teammate data
Smart fields are the definitions (the merge fields a signature renders); each teammate holds a value per field. Bulk edits go wrong in two ways that look nothing alike, and one of them returns success — read the write-safety section before running a batch.
Who owns the data
Two layers of ownership, both of which can block a write:
- The team list. If a Google/Microsoft directory integration drives teammates,
create_teammate,delete_teammate, and every email write return 409. That is not an error to route around — the directory is the source of truth. Change it there and it syncs back. - The individual field. A smart field with a non-null
integration_idsyncs its values from an integration and is read-only per teammate, even in a workspace that manages its own team list.
list_teammates returns each value with its own integration_id, so you can see both layers
before touching anything.
Before any bulk write
list_smart_fields— you write bysmart_field_id(UUID), never by label. Resolve labels → ids once, up front. Note each field'skindandintegration_id.list_teammateswithauto_paginate— the current values, and who is affected.- Split the work: fields you can actually write vs. fields an integration owns. Tell the user which ones you cannot change, and where to change them, before running the batch — not as an apology afterwards.
- Confirm the whole plan once ("update Job title for these 38 people"), rather than asking per person.
Write safety
update_teammate takes the teammate id plus smart_fields: [{ smart_field_id, value }]. It has
two very different failure modes:
| What happens | |
Loud — unknown smart_field_id, or a value invalid for its kind (url and email are validated) | 422, the whole update fails, nothing changes for that teammate |
Silent — integration-synced fields and image fields in the payload | Skipped, and the call still returns success |
A 200 does not mean the value changed. After a bulk run, re-read the affected teammates and diff against what you sent, then report honestly:
Updated 38 of 40. 2 skipped — Job title syncs from Google Workspace and is read-only here.
null or an empty string clears a value. One call per teammate; there is no batch endpoint.
People and addresses
create_teammate— primaryemailplus optional initialsmart_fields.create_email— an alias for an existing teammate (teammate_id+address). A teammate's primary address is set with the teammate and cannot be deleted viadelete_email(422).update_emailchanges an address;delete_teammateis a soft delete.- Signatures are assigned per email, not per teammate — a new alias may need its own assignment.
See the
signature-rolloutskill.
Changing the field set
create_smart_field—labelpluskind(text|url|email|phone_number|image). Binding it to an integration (integration_id+integration_attribute) syncs the values automatically, which beats maintaining them by hand whenever the data already lives in the directory.update_smart_field— default fields are read-only (422); the computed Email field is not addressable (404).delete_smart_field— removes that value on every teammate. Default fields → 422; a field still used in a signature → 409, so check where it is used first. This is destructive and permanent: confirm explicitly, naming what will be lost.
Rules of thumb
- An empty value renders as a blank line in every signature using that field. A field empty for most of the team is a finding worth raising, not a shrug.
- Verify the outcome where it counts:
preview_signaturefor layout,get_signature_htmlfor what one recipient actually receives.
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.

