Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Markdown based document-driven RESTful API testing.
| Date | Stars |
|---|---|
| 2026-07-24 | 942 |
| 2026-07-25 | 942 |
| 2026-07-28 | 942 |
| 2026-07-30 | 942 |
| 2026-08-06 | 942 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day

# silk [](https://travis-ci.org/matryer/silk) [](https://goreportcard.com/report/github.com/matryer/silk)
Markdown based document-driven web API testing.
* Write nice looking Markdown documentation ([like this](https://github.com/matryer/silk/blob/master/testfiles/success/example.silk.md)), and then run it using the [silk command](#command-line)
* Simple and robust [Markdown API](#markdown-api)
* Comes with [real examples](https://github.com/matryer/silk/tree/master/testfiles/success) that you can copy (that are also part of the test suite for the project)
* 10% discount on [LightPaper markdown editor app](http://lightpaper.42squares.in) for Silk users: use `SILKTEST` code.
## Learn more
[](https://skillsmatter.com/skillscasts/7636-go-release#video)
[(VIDEO) Watch the talk about Silk](https://skillsmatter.com/skillscasts/7636-go-release#video) (with [slides](http://go-talks.appspot.com/github.com/matryer/silk/other/presentation/silk.slide#1)) or [read about Silk in this blog post](https://medium.com/@matryer/introducing-silk-markdown-driven-api-tests-1f8cfb0ef99a#.kzpanz1xc).

## Markdown API
Tests are made up of documents written in Markdown.
* `# Group` - Top level headings represent groups of requests
* `## GET /path` - Second level headings represent a request
* Code blocks with three back tics represent bodies
* `* Field: value` - Lists describe headers and assertions
* `* ?param=value` - Request parameters
* `---` seperators break requests from responses
* Comments (starting with `//`) allow you to capture variables
* Plain text is ignored to allow you to add documentation
* Inline back tics are ignored and are available for formatting
### Document structure
A document is made up of:
* A request
* `---` seperator
* Assertions
### Requests
A request starts with `##` and must have an HTTP method, and a path:
```
## METHOD /path
```
Examples include:
```
## GET /people
## POST /people/1/comments
## DELETE /people/1/comments/2
```
#### Request body (optional)
To specify a request body (for example for `POST` requests) use a codeblock using backtics (` ``` `):
```
{"name": "Silk", "release_year": 2016}
```
#### Request headers (optional)
You may specify request headers using lists (prefixed with `*`):
```
* Content-Type: "application/json"
* X-Custom-Header: "123"
```
#### Request parameters (optional)
Adding parameters to the path (like `GET /path?q=something`) can be tricky, especially when you consider escaping etc. To address this, Silk supports parameters like lists:
```
* ?param=value
```
The parameters will be correctly added to the URL path before the request is made.
#### Cookies
Setting cookies on a request can be done using the [HTTP header](https://en.wikipedia.org/wiki/HTTP_cookie#Implementation) pattern:
```
* Cookie: "key=value"
```
* See [asserting cookies](#asserting-cookies).
### Assertions
Following the `---` separator, you can specify assertions about the response. At a minimum, it is recommended that you assert the status code to ensure the request succeeded:
```
* Status: 200
```
You may also specify response headers in the same format as request headers:
```
* Content-Type: "application/json"
* X-MyServer-Version: "v1.0"
```
If any of the headers do not match, the test will fail.
#### Capturing data
Silk allows you to capture values at the point of asserting them and reuse them in future requests and assertions. To capture a value, include a comment on the line that mentions a `{placeholder}`:
```
* Data.UserID: /.*/ // The user's uniqExcerpt of 7,609 characters
Read on GitHubMat Ryer · @grafana · United Kingdom
105
8
5
4
3
1
1
Would you bet a product on this? Bounded 0–100 and slow moving.
matched fp:adaba3b4ffe9e89c, topic:testing