CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl-labs/tile-creator

Create tessl tiles with docs, rules, and skills.

Does it follow best practices?

Evaluation97%

1.98x

Agent success when using this tile

Validation for skill structure

Overview
Skills
Evals
Files

rules-format.mdreferences/

Rules Format

Rules tell agents how to behave. They're loaded into the agent's instruction context.

When to Use Rules

Rules are for critical behavioral guidance only. Most content belongs in docs or skills instead.

Content TypeUse ForExample
DocsFacts, knowledge, referenceAPI documentation, schemas
SkillsProcedures, workflowsDeployment process, code generation
RulesMust-follow constraintsSecurity requirements, naming conventions

Ask yourself: Is this a constraint the agent must always follow, or information it should know? Constraints → rules. Information → docs.

Minimalism Principles

Rules consume context on every request. Keep them minimal:

  1. Few rules - Only the most critical behavioral guidance
  2. Short rules - Each rule should be scannable, not a document
  3. Actionable rules - Direct instructions, not explanations

Good rule content:

# API Error Responses

Return errors as:
\`\`\`json
{"error": {"code": "ERROR_CODE", "message": "Description"}}
\`\`\`

Status codes: 400 (validation), 401 (auth), 403 (forbidden), 404 (not found), 500 (server)

Bad rule content: Multi-page explanations of why these patterns matter, history of error handling approaches, comparisons with alternatives.

Structure

rules/
├── security.md      # Critical security constraints
└── code-style.md    # Core conventions (if truly essential)

Each rule is a separate file referenced in tile.json under steering.

YAML Frontmatter

Every rule file requires frontmatter:

FieldRequiredDescription
alwaysApplyYestrue = always loaded, false = conditional
descriptionIf alwaysApply: falseTrigger description (2-3 sentences, include "Use when")

Always-Apply Rules

Use sparingly - these load on every request:

---
alwaysApply: true
---

# Security

- Never log secrets or credentials
- Sanitize all user input before database queries
- Use parameterized queries, never string concatenation

Conditional Rules

Loaded only when the trigger matches:

---
description: Database migration patterns. Use when creating or modifying database schemas.
alwaysApply: false
---

# Migrations

1. Include both up and down migrations
2. Use transactions for data modifications
3. Test on copy of production data first

Writing Good Descriptions

The description acts as a trigger. Be specific:

Good:

description: TypeScript error handling patterns. Use when implementing try/catch or error types.

Bad:

description: Error handling guide.

tile.json Configuration

{
  "steering": {
    "security": { "rules": "rules/security.md" },
    "migrations": { "rules": "rules/migrations.md" }
  }
}

Install with Tessl CLI

npx tessl i tessl-labs/tile-creator@1.1.0

SKILL.md

tile.json