Manage individual lifecycle and knowledge injection. Use when you need to create, retire, restore, or permanently remove individuals, or when you need to inject principles and procedures into an individual.
Feature: Individual Lifecycle Manage the full lifecycle of individuals in the RoleX world. All operations are invoked via the use tool with ! prefix.
Scenario: born — create a new individual Given you want to bring a new individual into the world When you call use with !individual.born Then a new individual node is created under society And the individual can be activated, hired into organizations, and taught skills And parameters are: """ locator: "!individual.born" args: content: "Feature: ..." # Gherkin persona (optional) id: "sean" # kebab-case identifier alias: ["小明", "xm"] # aliases (optional) """
Scenario: born — persona writing guidelines Given the persona defines who this individual is Then the Feature title names the individual And the description captures personality, values, expertise, and background And Scenarios describe distinct aspects of the persona And keep it concise — identity is loaded at every activation
Scenario: retire — archive an individual Given an individual should be temporarily deactivated When you call use with !individual.retire Then the individual is moved to the past archive And all data is preserved for potential restoration via rehire And parameters are: """ locator: "!individual.retire" args: individual: "sean" """
Scenario: die — permanently remove an individual Given an individual should be permanently removed When you call use with !individual.die Then the individual is moved to the past archive And this is semantically permanent — rehire is technically possible but not intended And parameters are: """ locator: "!individual.die" args: individual: "sean" """
Scenario: retire vs die — when to use which Given you need to remove an individual from active duty When the individual may return later (sabbatical, role rotation) Then use retire — it signals intent to restore When the individual is no longer needed (deprecated role, replaced) Then use die — it signals finality
Scenario: rehire — restore a retired individual Given a retired individual needs to come back When you call use with !individual.rehire Then the individual is restored to active society And all previous knowledge, experience, and history are intact And parameters are: """ locator: "!individual.rehire" args: individual: "sean" """
Feature: Knowledge Injection Inject principles and procedures into an individual from the outside. This bypasses the cognition cycle — no encounters or experiences consumed. Use this to equip individuals with pre-existing knowledge and skills.
Scenario: teach — inject a principle Given an individual needs a rule or guideline it hasn't learned through experience When you call use with !individual.teach Then a principle is created directly under the individual And if a principle with the same id already exists, it is replaced (upsert) And parameters are: """ locator: "!individual.teach" args: individual: "sean" content: "Feature: Always validate input\n ..." id: "always-validate-input" """
Scenario: train — inject a procedure (skill reference) Given an individual needs a skill it hasn't mastered through experience When you call use with !individual.train Then a procedure is created directly under the individual And if a procedure with the same id already exists, it is replaced (upsert) And the procedure Feature description MUST contain the ResourceX locator for the skill And parameters are: """ locator: "!individual.train" args: individual: "sean" content: "Feature: Skill Creator\n https://github.com/Deepractice/DeepracticeX/tree/main/skills/skill-creator\n\n Scenario: When to use\n Given I need to create a skill\n Then load this skill" id: "skill-creator" """
Scenario: teach vs realize — when to use which Given you need to add a principle to an individual When the principle comes from external knowledge (documentation, best practices, user instruction) Then use teach — inject directly, no experience needed When the individual discovered the principle through its own work Then use realize — it consumes experience and produces the principle organically
Scenario: train vs master — when to use which Given you need to add a procedure to an individual When the skill already exists (published skill, known capability) Then use train — inject directly with a locator reference When the individual developed the skill through its own experience Then use master — it consumes experience and produces the procedure organically
Scenario: Principle writing guidelines Given a principle is a transferable truth Then the Feature title states the rule as a general statement And Scenarios describe different situations where this principle applies And the tone is universal — no mention of specific projects or people And the id is keywords joined by hyphens (e.g. "always-validate-input")
Scenario: Procedure writing guidelines Given a procedure is a skill reference pointing to full instructions Then the Feature title names the capability And the Feature description line MUST be the ResourceX locator And the locator can be a GitHub URL, local path, or registry identifier And Scenarios summarize when and why to use this skill And the id is keywords joined by hyphens (e.g. "skill-creator")
Feature: Common Workflows Typical sequences of operations for managing individuals.
Scenario: Bootstrap a new role Given you need to create a fully equipped individual When setting up a new role from scratch Then follow this sequence: """ 1. locator: "!individual.born" args: { id: "sean", content: "Feature: ..." } 2. locator: "!individual.teach" args: { individual: "sean", content: "...", id: "..." } # repeat 3. locator: "!individual.train" args: { individual: "sean", content: "...", id: "..." } # repeat 4. activate with roleId: "sean" # verify the individual's state """
Scenario: Transfer knowledge between individuals Given individual A has a useful principle or procedure When individual B needs the same knowledge Then teach/train the same content to individual B And use the same id to maintain consistency across individuals
Scenario: Update existing knowledge Given an individual's principle or procedure is outdated When the content needs to change but the concept is the same Then teach/train with the same id — upsert replaces the old version And the individual retains the same id with updated content
Scenario: Remove knowledge Given an individual has outdated or incorrect knowledge When it should be removed entirely Then use forget with the node id And only instance nodes can be forgotten — prototype nodes are read-only