Authoring skills

Wrap your team's playbook into a reusable, version-controlled skill — YAML + Python.

Anatomy of a skill

A skill is a folder under %APPDATA%\HISAB\skills\<skill-id>\:

my-monthly-rec/
├── skill.yaml      # name, description, inputs, preconditions
├── main.py         # Python entry point
└── README.md       # documentation rendered in-app

skill.yaml

id: my-monthly-rec
name: Monthly bank reconciliation
description: |
  Match a bank statement against the bank book by amount and date
  tolerance. Output a Mismatches sheet and a draft JE.
version: 1.0.0
inputs:
  - key: statement_sheet
    label: Bank statement sheet name
    type: sheet_pick
    required: true
  - key: book_sheet
    label: Bank book sheet name
    type: sheet_pick
    required: true
  - key: tolerance
    label: Match tolerance (amount)
    type: number
    default: 0.5
preconditions:
  - "{{statement_sheet}} has columns: Date, Description, Amount"
  - "{{book_sheet}} has columns: Date, Particulars, Amount"
entry: main.py:reconcile

main.py

import hisab as h
import pandas as pd

def reconcile(statement_sheet, book_sheet, tolerance):
    stmt = h.read_range(statement_sheet)
    book = h.read_range(book_sheet)
    # ... matching logic ...
    h.write_range("Mismatches", "A1", unmatched_df)
    return { "unmatched_count": len(unmatched_df) }

Sharing skills

Solo and Pro: copy the folder to teammates' %APPDATA%\HISAB\skills\. Team and Enterprise: skills sync via the team console — push from your machine, everyone gets the update on their next chat.