---
title: 'Learn'
metaTitle: 'Learn Shisho'
metaDescription: 'This page describes details of Shisho.'
---

Shisho has two major features: (1) pattern matching for code and (2) transformation of the matched code. To use them, you need to write _a rule_, including _patterns_, _rule constraints_, and _rewrite patterns_. The following page explains these concepts with tutorials:

- ["Pattern"](/shisho/learn-shisho/01-pattern), which describes the code to search.
- ["Rule and Rule Set"](/shisho/learn-shisho/02-rule), which bundles miscellaneous information on pattern matching and code transformation.
- ["Rule Constraint"](/shisho/learn-shisho/03-constraint), which imposes additional constraints on pattern matching.
- ["Rewrite Option(s)"](/shisho/learn-shisho/04-rewrite-option), which describes how the matched parts of the code should be rewritten.
