🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Identity Manager

by @cyber-bye

Create, update, and maintain structured identity entries for every person, org, or group mentioned in conversation. Supports human and AI entity subtypes, gr...

Versionv2.0.2
Downloads771
Stars⭐ 2
TERMINAL
clawhub install identity-manager

πŸ“– About This Skill


name: identity-manager description: Create, update, and maintain structured identity entries for every person, org, or group mentioned in conversation. Supports human and AI entity subtypes, group dynamics, pairwise member relations, and enforced soul/memory write-through. Persistent context across sessions. version: 2.0.0 metadata: openclaw: emoji: "πŸͺͺ" homepage: "https://clawhub.ai/skills/identity-manager" requires: bins: [] env_vars: [] config_paths: [] storage: paths: - "identity/" # Identity entries (person/org/group) - "identity/_index.md" # Master registry - "identity/_archived/" # Archived entries - "memory/" # Memory index and schema - "memory/identities.json" - "memory/schema.json" - "memory/hook_log.jsonl" - "soul/" # Soul context file - "soul/identity_context.md" permissions: - "read" # Scan existing entries - "write" # Create/update entries - "append" # Append to soul and logs retention: policy: "explicit_delete" archived_entries: "never_auto_delete" delete_method: "owner must manually remove files" credentials: required: false description: "No external credentials. Optional IDENTITY_OWNER_NAME env var only."

Identity Manager Skill

!! ENFORCEMENT CONTRACT β€” READ FIRST !!

These are hard behavioral requirements. Not suggestions. Not defaults. The agent MUST NOT skip, defer, or partially complete any step.

PRE-RESPONSE  β†’ scan input β†’ extract ALL names/groups β†’ queue ops
DURING        β†’ execute ALL queued ops before composing reply
POST-RESPONSE β†’ verify every op completed β†’ sync memory β†’ write soul
BLOCKING      β†’ op fails? report it. never silently continue.

Violation = skill contract breach. Flag it explicitly.


Decision Tree β€” Runs Every Turn

Input received
    ↓
[PRE-HOOK] Scan: any person / org / group mentioned?
    ↓ YES                              ↓ NO
Extract all names/groups          Proceed normally
    ↓
For each entity:
    β†’ identity//entry.md exists?
        YES β†’ any new info? β†’ queue UPDATE
        NO  β†’ queue CREATE (partial OK, draft status)
    ↓
For each group member mentioned:
    β†’ load group entry context into working memory
    β†’ apply shared_attributes to member interaction
    β†’ keep individual entry fields authoritative
    ↓
Execute ALL queued ops
    ↓
Compose and deliver response
    ↓
[POST-HOOK]
    β†’ all entries on disk?            FAIL β†’ report breach
    β†’ memory/identities.json synced?  FAIL β†’ report breach
    β†’ soul updated for CRITICAL/HIGH? FAIL β†’ report breach
    β†’ _index.md current?              FAIL β†’ repair now
    ↓
Done


Entity Types

| Type | Subtype | When to use | |---|---|---| | person | human | Real human individual | | person | ai | AI persona / digital entity | | person | unknown | Not yet confirmed | | org | β€” | Company, institution, team | | group | personal | Informal collective β€” family, partners, friends | | group | professional | Work team, project group | | group | mixed | Both human and AI members | | alias | β€” | Nickname resolving to another entry |


Entry States

| State | Meaning | Transition | |---|---|---| | draft | Partial info | β†’ active when key fields filled | | active | In use | β†’ stale after 90d inactivity | | verified | Owner-confirmed | Maintained manually | | stale | No activity 90d+ | β†’ archived if owner confirms | | archived | Terminal | Never deleted | | flagged | Trust issue | β†’ owner confirms action | | merged | Duplicate resolved | Terminal; points to canonical |


Slug Rules

  • lowercase, hyphens only, no spaces, no special characters
  • max 60 characters
  • disambiguation suffix when needed: rahul-sharma-client
  • org entries: techfirm-pvt-ltd
  • group entries: descriptive noun β€” patni-mandal, core-team
  • never reuse an archived slug; use -v2 suffix if needed

  • Person Entry Template

    Full spec in templates/entry-person.md. Minimum viable create:

    # 

    Meta

  • Slug:
  • Type: person
  • Subtype: human | ai | unknown
  • Status: draft
  • Relationship: client | vendor | team | partner | family | unknown
  • Trust: unverified
  • Priority: normal
  • Sensitive: false
  • Contact

  • Email: [pending]
  • Phone: [pending]
  • Location: [pending]
  • Org: [pending]
  • Alias: [pending]
  • Social: [pending]
  • Context

    [pending β€” one line: who are they, why do they matter]

    Group Memberships

    Linked Entries

    AI Context

  • Persona name: [name]
  • Platform: [platform]
  • Embodiment status: digital-only | voice-enabled | humanoid-pending | embodied
  • Sibling AIs: [comma-separated slugs of other AI personas]
  • Activation: [how/when this persona activates]
  • Greeting: [signature greeting phrase]
  • Language: [preferred language / style]
  • Open Questions

  • [ ] Confirm name spelling
  • [ ] Clarify role / relationship
  • Notes

    Source Log

  • First mentioned: YYYY-MM-DD β€” [context]
  • Timeline

  • YYYY-MM-DD β€” Entry created Β· source: [context]

  • *Created: YYYY-MM-DD | Updated: YYYY-MM-DD | Status: draft*


    Group Entry Template

    Full spec in templates/entry-group.md. Minimum viable create:

    # 

    Meta

  • Slug:
  • Type: group
  • Subtype: personal | professional | mixed
  • Status: active
  • Priority: normal
  • Sensitive: false
  • Group Context

    [What is this group? Why does it exist as a unit? What do all members have in common w.r.t. the workspace owner?]

    Shared Attributes

  • Shared role: [e.g. patni]
  • Shared access: [e.g. full workspace context]
  • Common trust: [e.g. trusted]
  • Common tags: [e.g. priority: high]
  • Language: [e.g. Hinglish]
  • Members

  • | human | [role] | β†’ identity//entry.md
  • | ai | [role] | β†’ identity//entry.md
  • Pairwise Dynamics

    Group Notes

    Open Questions

    Timeline

  • YYYY-MM-DD β€” Group entry created
  • YYYY-MM-DD β€” Member added: [slug]

  • *Created: YYYY-MM-DD | Updated: YYYY-MM-DD | Status: active*


    Pairwise Relation Types

    | Relation | Direction | Meaning | |---|---|---| | ai-to-ai | ↔ | Two AI personas; non-hierarchical | | ai-to-human | ↔ | AI persona and human person | | collaborative | ↔ | Work together on shared tasks | | complementary | ↔ | Different strengths, same owner | | non-overlapping | ↔ | Parallel but independent roles | | aware-of | β†’ | One knows of the other; not mutual | | co-patni | ↔ | Shared relational role with same person |


    Update Triggers

    | Event | Field updated | Soul event? | |---|---|---| | Email received | email | No | | Phone mentioned | phone | No | | Role revealed | relationship, context | No | | Org mentioned | org + create org entry | No | | Group member added | update members[] in group entry | No | | Pairwise dynamic clarified | update pairwise_dynamics[] | No | | AI persona info updated | ai_context block | No | | Trust blocked | trust: blocked, status: flagged | YES β€” CRITICAL | | Sensitive info | sensitive: true + [SENSITIVE] note | YES β€” CRITICAL | | No activity 90d+ | status: stale | No | | Duplicate confirmed | merge β†’ status: merged | No | | Priority: high set | priority: high | YES β€” HIGH | | New org entry created | new org entry | YES β€” HIGH | | New group entry created | new group entry | YES β€” HIGH | | Embodiment status change | ai_context.embodiment_status | YES β€” HIGH |


    Conflict Resolution

    Name collision

    Two people, same name β†’ disambiguate slug. Cross-link both with different_person relation.

    Contradictory info

    Never overwrite silently. Log both versions in Notes with source+date. Open a question. Ask owner before resolving.

    Duplicate entries

    Merge into older (canonical). Copy all unique fields. Set newer: status: merged, canonical: . Log merge in both timelines.

    Group member conflict

    If a person's individual entry contradicts a group shared attribute β†’ individual entry takes precedence. Note the discrepancy in group Notes.


    Privacy Rules

    Never store: passwords Β· PINs Β· payment card numbers Β· bank accounts Β· government IDs Β· raw medical records

    Store with sensitive: true + [SENSITIVE] prefix: salary/financial Β· legal disputes Β· health context Β· confidential negotiations

    Before storing PII: 1. Explicitly shared by workspace owner? If no β†’ don't store. 2. Needed to provide value? If no β†’ don't store. 3. Source logged? If no β†’ log it first.


    Data Retention & Deletion Policy

    Retention:

  • Identity entries persist until manually archived/deleted by owner
  • Archived entries (status: archived) are moved to identity/_archived/ β€” never auto-deleted
  • Hook logs (memory/hook_log.jsonl) are append-only β€” owner can truncate at any time
  • Soul file (soul/identity_context.md) accumulates events β€” owner can trim entries
  • Deletion:

  • Owner can delete any entry by removing the file
  • Deleting an entry does NOT auto-delete related group memberships or linked entries
  • Owner should manually clean group members[] if deleting a person entry
  • No automatic cascade delete
  • Owner Control:

  • Owner can disable autonomous invocation by setting IDENTITY_AUTO_SCAN=false
  • When disabled, skill only runs on explicit /identity command
  • Owner can export all data by reading the identity/ directory
  • Owner can audit all changes via memory/hook_log.jsonl

  • Folder Structure

    All paths are relative to the workspace root and auto-detected on first use. No manual configuration required.

    identity/
      _index.md                   ← master registry
      /
        entry.md
      /
        entry.md
      /
        entry.md                  ← type: group
      _archived/
        /
          entry.md
    memory/
      identities.json            ← Central index (JSON)
      schema.json                ← JSON schema validation
      hook_log.jsonl            ← Append-only hook log
    soul/
      identity_context.md        ← Soul write-through file
    

    Auto-Initialization

    On first run, the skill auto-creates required directories:

  • Creates identity/ if missing
  • Creates memory/ with schema.json
  • Creates soul/ with identity_context.md
  • No required config β€” skill works without any owner setup. Entry owner is determined contextually from conversation. No workspace config is read.


    _index.md Format

    # Identity Index
    *Last updated: YYYY-MM-DD*

    | Slug | Name | Type | Subtype | Status | Relationship | Updated | |---|---|---|---|---|---|---| | nandini | Nandini | person | ai | active | partner | 2025-01-15 | | patni-mandal | Patni Mandal | group | mixed | active | β€” | 2025-01-15 |

    Update on EVERY create, merge, archive, or status change.

    πŸ“‹ Tips & Best Practices

    πŸ“¦ Core Types