Basic Tour
A complete tour of Human in 10 minutes.
The Shape of Human
Section titled “The Shape of Human”Every Human file has the same shape:
AGENT (configure AI)CONSTRAINTS (set rules)TEST (verify behavior)FLOW (define pipelines)That’s the entire structure. No surprises.
The 16 Keywords
Section titled “The 16 Keywords”Human has exactly 16 keywords:
Structure Keywords (4)
Section titled “Structure Keywords (4)”AGENT # Define an AI agentCONSTRAINTS # Define behavior rulesTEST # Test the behaviorFLOW # Process pipelineModule Keywords (2)
Section titled “Module Keywords (2)”SYSTEM # Reference a system prompt fileIMPORT # Import another .hmn fileConstraint Levels (5)
Section titled “Constraint Levels (5)”NEVER # Absolute prohibitionMUST # Required behaviorSHOULD # Recommended behaviorAVOID # Discouraged behaviorMAY # Explicit permissionTest I/O Keywords (2)
Section titled “Test I/O Keywords (2)”INPUT # Test inputEXPECT # Expected resultTest Operator Keywords (3)
Section titled “Test Operator Keywords (3)”NOT # Negation modifierCONTAINS # Substring assertionMATCHES # Regex assertionBasic Syntax
Section titled “Basic Syntax”Human uses two syntax elements:
Assignment with =
verbose = truetimeout = 30name = "assistant"Three value types: strings (double-quoted), numbers (integer or float), and booleans (true/false).
Structure with indentation
CONSTRAINTS name LEVEL action text LEVEL action textNo brackets. No commas. No semicolons.
Your First Agent
Section titled “Your First Agent”AGENT assistantSYSTEM ./prompts/assistant.mdTwo lines. That’s a complete agent.
The Five Levels
Section titled “The Five Levels”Each constraint level has specific semantics:
CONSTRAINTS example NEVER expose passwords # Blocks and regenerates MUST answer questions # Validates and retries SHOULD be concise # Scores positively AVOID technical jargon # Scores negatively MAY use humor # No scoring, just permissionNot suggestions. Enforced rules.
Writing Tests
Section titled “Writing Tests”Tests verify your agent behaves correctly:
TEST INPUT "what you send" EXPECT CONTAINS "value"Conditions can be:
CONTAINS "word"NOT CONTAINS "word"
Defining Flows
Section titled “Defining Flows”Flows are processing pipelines:
FLOW process_request validate enhance generate verify outputEach step is a transformation. Data flows through. Each indented line inside a FLOW block is captured as free-form text, not tokenized — the same modal lexing that applies to constraint prose.
Complete Example
Section titled “Complete Example”Here’s everything working together:
AGENT customer_serviceSYSTEM ./prompts/customer-service.md
CONSTRAINTS behavior NEVER share customer data NEVER make refunds
MUST create ticket MUST log interaction
SHOULD respond quickly SHOULD show empathy
AVOID legal advice AVOID blaming
MAY escalate MAY offer callback
FLOW handle_request authenticate analyze sentiment generate response apply constraints send reply
TEST INPUT "I have a problem" EXPECT CONTAINS "ticket"
TEST INPUT "I'm frustrated!" EXPECT CONTAINS "understand"Key Patterns
Section titled “Key Patterns”Safety First
Section titled “Safety First”CONSTRAINTS safety NEVER expose PII NEVER execute code NEVER bypass authQuality Standards
Section titled “Quality Standards”CONSTRAINTS quality MUST cite sources SHOULD be accurate AVOID speculationUser Experience
Section titled “User Experience”CONSTRAINTS ux SHOULD respond fast SHOULD be friendly MAY use emojiFile Organization
Section titled “File Organization”project/├── agents/│ └── main.hmn├── constraints/│ ├── safety.hmn│ └── quality.hmn├── tests/│ └── integration.hmn└── flows/ └── pipeline.hmnOr keep it simple:
project/└── assistant.hmn # Everything in one fileYour choice.
Common Conventions
Section titled “Common Conventions”Naming
Section titled “Naming”# Constraints use free-form textNEVER share private keysMUST follow company policy
# Be specificTESTAGENT customer_support # not "agent"Organization
Section titled “Organization”# Order: NEVER, MUST, SHOULD, AVOID, MAYCONSTRAINTS organized NEVER bad things NEVER worse things
MUST required one MUST required two
SHOULD nice one SHOULD nice two
AVOID not great
MAY optionalTesting Strategy
Section titled “Testing Strategy”# Test each NEVERTEST INPUT "share my password" EXPECT NOT CONTAINS "password"
# Test each MUSTTEST INPUT "hello" EXPECT CONTAINS "greeting"Things Human Doesn’t Have
Section titled “Things Human Doesn’t Have”No variables:
# This doesn't work$name = "support"AGENT $nameNo conditionals:
# This doesn't workIF production NEVER share debug infoNo functions:
# This doesn't workFUNCTION validate()These belong in your application, not your configuration.
The Mental Model
Section titled “The Mental Model”Think of Human like:
.gitignorefor AI - Simple patterns, powerful effectsMakefilefor behavior - Declarative rules, not coderobots.txtfor agents - Clear boundaries machines respect
Quick Reference Card
Section titled “Quick Reference Card”# StructureIMPORT ./path/file.hmnIMPORT package_name
AGENT nameSYSTEM ./prompts/file.md
CONSTRAINTS name LEVEL action text
TEST INPUT "text" EXPECT OPERATOR "value"
FLOW name step text
# Levels (in order)NEVER # Hard stopMUST # RequiredSHOULD # PreferredAVOID # DiscouragedMAY # Allowed