Skip to content

Commit 353500c

Browse files
authored
Merge pull request #87 from tarun-etikala/feat/markdownlint
feat: add markdownlint linting to CI
2 parents 07331fe + f8d121c commit 353500c

26 files changed

Lines changed: 245 additions & 144 deletions

File tree

.github/ISSUE_TEMPLATE/bug_report.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ A clear and concise description of what the bug is.
1212

1313
**To Reproduce**
1414
Steps to reproduce the behavior:
15+
1516
1. Go to '...'
1617
2. Click on '....'
1718
3. Scroll down to '....'
@@ -28,6 +29,6 @@ If applicable, add screenshots to help explain your problem.
2829

2930
**Libs and packages (please complete the following information):**
3031
`uv pip list`
31-
32+
3233
**Additional context**
3334
Add any other context about the problem here.
Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Ruff
1+
name: Code Quality
22

33
on:
44
push:
@@ -10,7 +10,7 @@ on:
1010
permissions: {}
1111

1212
concurrency:
13-
group: ruff-${{ github.ref }}
13+
group: code-quality-${{ github.ref }}
1414
cancel-in-progress: true
1515

1616
jobs:
@@ -36,3 +36,8 @@ jobs:
3636

3737
- name: Ruff format check
3838
run: ruff format --check .
39+
40+
- name: Markdownlint
41+
uses: DavidAnson/markdownlint-cli2-action@ce4853d43830c74c1753b39f3cf40f71c2031eb9 # v23.0.0
42+
with:
43+
globs: "**/*.md"

.markdownlint-cli2.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
ignores:
2+
- ".venv/**"
3+
- "**/venv/**"
4+
- "**/.venv/**"
5+
- "**/node_modules/**"
6+
- "**/site-packages/**"
7+
- ".claude/**"
8+
- "docs/superpowers/**"

.markdownlint.jsonc

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
{
2+
// Start with all rules enabled
3+
"default": true,
4+
5+
// MD013: Line length — disabled; too noisy for docs-heavy repos
6+
"MD013": false,
7+
8+
// MD033: Inline HTML — disabled; common in GitHub markdown (badges, <details>, etc.)
9+
"MD033": false,
10+
11+
// MD036: Emphasis used instead of heading — disabled; common pattern in READMEs
12+
"MD036": false,
13+
14+
// MD041: First line should be a top-level heading — disabled; files often start with badges or frontmatter
15+
"MD041": false,
16+
17+
// MD060: Table column style — disabled; too noisy, newer rule not widely adopted
18+
"MD060": false,
19+
20+
// MD024: Multiple headings with same content — allow duplicates in different sections
21+
"MD024": {
22+
"siblings_only": true
23+
},
24+
25+
// MD029: Ordered list item prefix — require incrementing numbers (1. 2. 3.)
26+
"MD029": {
27+
"style": "ordered"
28+
},
29+
30+
// MD046: Code block style — require fenced (```) not indented
31+
"MD046": {
32+
"style": "fenced"
33+
}
34+
}

AGENTS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ make dry-run # preview Helm manifests
3030
- All agents must expose `POST /chat/completions` (JSON + SSE) and `GET /health`
3131
- Source code in `src/<agent_name>/` within each agent directory
3232
- Keep agents self-contained -- never import from another agent's `src/`
33+
3334
## Workflow
3435

3536
- `cd` into the agent directory first -- Makefiles use relative paths and read `agent.yaml` at runtime

CONTRIBUTING.md

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ Before submitting, please read our [Code of Conduct](CODE_OF_CONDUCT.md). By par
1616

1717
## Linting and formatting
1818

19-
This project uses [ruff](https://docs.astral.sh/ruff/) for Python linting and formatting. CI runs ruff as a blocking check on all pull requests.
19+
This project uses [ruff](https://docs.astral.sh/ruff/) for Python linting and formatting, and [markdownlint](https://github.com/DavidAnson/markdownlint) for Markdown linting. Both run as blocking CI checks on all pull requests via the `Code Quality` workflow.
20+
21+
### Python (ruff)
2022

2123
Run locally before pushing:
2224

@@ -29,6 +31,17 @@ ruff format . # auto-format
2931

3032
Configuration is in [`ruff.toml`](ruff.toml) at the repo root.
3133

34+
### Markdown (markdownlint)
35+
36+
Run locally before pushing:
37+
38+
```bash
39+
npx markdownlint-cli2@0.22.1 "**/*.md" # lint
40+
npx markdownlint-cli2@0.22.1 --fix "**/*.md" # auto-fix
41+
```
42+
43+
Configuration is in [`.markdownlint.jsonc`](.markdownlint.jsonc) (rules) and [`.markdownlint-cli2.yaml`](.markdownlint-cli2.yaml) (ignored paths) at the repo root.
44+
3245
## Commit message conventions
3346

3447
We encourage [Conventional Commits](https://www.conventionalcommits.org/) so that history and release notes stay clear.
@@ -48,7 +61,7 @@ You can optionally add a scope (e.g. the agent or module name) in parentheses af
4861

4962
### Examples
5063

51-
```
64+
```text
5265
feat: add health check endpoint to autogen mcp_agent
5366
fix: correct env var name in deployment in langgraph_react_agent
5467
docs: update README with OpenShift deploy steps
@@ -107,6 +120,7 @@ These are the files you need to create or update when adding tracing to your age
107120
This module exports `enable_tracing()` (and `wrap_func_with_mlflow_trace()` if your framework's autolog doesn't cover everything). It handles health-checking the MLflow server with retry logic, configuring the experiment, enabling the correct autolog for your framework, and gracefully degrading if the server is unreachable. MLflow imports are inside `enable_tracing()` (not at module top) so the module can be imported without MLflow installed — but if `MLFLOW_TRACKING_URI` is set and MLflow is missing, the agent will fail at startup with a clear error.
108121

109122
See existing examples:
123+
110124
- Full autolog (no manual wrapping needed): `agents/langgraph/react_agent/src/react_agent/tracing.py`
111125
- Partial autolog (tools need manual wrapping): `agents/crewai/websearch_agent/src/crewai_web_search/tracing.py`
112126
- No framework autolog (tools + agent entry point need manual wrapping): `agents/vanilla_python/openai_responses_agent/src/openai_responses_agent/tracing.py`

MAINTAINERS.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@ A repository maintainer is a committer with the additional privilege of managing
44

55
## Current Maintainers
66

7-
87
| Name | GitHub Username |
98
|-----------------|---------------------------------------|
109
| Tomasz Guzik | [MRGuziX](https://github.com/MRGuziX) |
1110
| Wojciech Rębisz | [Wojciech-Rebisz](https://github.com/Wojciech-Rebisz) |
12-

README.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<div style="text-align: center;">
22

33
![Agentic Starter Kits](/images/ask_logo.png)
4+
45
# Agentic Starter Kits
56

67
</div>
@@ -48,7 +49,7 @@ Agents in this repository can support two deployment modes:
4849

4950
## Repository Structure
5051

51-
```
52+
```text
5253
agentic-starter-kits/
5354
├── agents/
5455
│ ├── langgraph/
@@ -146,10 +147,10 @@ See `tests/behavioral/` for full details.
146147

147148
## Additional Resources
148149

149-
- **Llama Stack Documentation**: https://llama-stack.readthedocs.io/
150-
- **Ollama Documentation**: https://docs.ollama.com/
151-
- **OpenShift Documentation**: https://docs.openshift.com/
152-
- **Kubernetes**: https://kubernetes.io/docs/
150+
- **Llama Stack Documentation**: <https://llama-stack.readthedocs.io/>
151+
- **Ollama Documentation**: <https://docs.ollama.com/>
152+
- **OpenShift Documentation**: <https://docs.openshift.com/>
153+
- **Kubernetes**: <https://kubernetes.io/docs/>
153154

154155
## Contributing
155156

agents/a2a/langgraph_crewai_agent/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ This runs `uv sync --python 3.12` and creates or updates `.venv`.
5555

5656
You can use placeholders for container images if you only run Python locally:
5757

58-
```
58+
```ini
5959
API_KEY=your-key-or-not-needed
6060
BASE_URL=http://localhost:8321/v1
6161
MODEL_ID=ollama/llama3.1:8b
@@ -115,7 +115,7 @@ Default ports: **9100** (Crew), **9200** (LangGraph). Do not set `PORT` unless y
115115

116116
### Playground (LangGraph orchestrator)
117117

118-
With the LangGraph server running (terminal 2), open **http://127.0.0.1:9200/** in a browser. The chat uses **A2A JSON-RPC** on **`POST /`** with **`message/send`**. The server also exposes **`POST /chat/completions`** (OpenAI-style). For local `curl`, use `http://127.0.0.1:9200`.
118+
With the LangGraph server running (terminal 2), open **<http://127.0.0.1:9200/>** in a browser. The chat uses **A2A JSON-RPC** on **`POST /`** with **`message/send`**. The server also exposes **`POST /chat/completions`** (OpenAI-style). For local `curl`, use `http://127.0.0.1:9200`.
119119

120120
---
121121

agents/autogen/mcp_agent/README.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ dynamically (e.g. churn prediction, deployment), and answers user questions via
1818

1919
- Discovers and loads tools from an MCP server at startup
2020
- Uses `reflect_on_tool_use=True` so the LLM reasons about tool results before responding
21-
- Supports both streaming (SSE) and non-streaming responses (streaming auto-adjusts when MLflow tracing is enabled; see [Tracing](#tracing) section)
21+
- Supports both streaming (SSE) and non-streaming responses (streaming auto-adjusts when MLflow tracing is enabled; see [Tracing](#tracing-optional) section)
2222
- Includes an interactive web playground with an MCP tools panel
2323
- Extends OpenAI streaming with `mcp.tool_usage` events and `tool_invocations` in JSON responses
2424

@@ -166,6 +166,7 @@ MLFLOW_WORKSPACE="default"
166166
```
167167

168168
**Notes:**
169+
169170
- `MLFLOW_TRACKING_URI` - URL of your MLflow server. For local development, use `http://localhost:5000`. If using MLflow on an OpenShift cluster, replace `<openshift-dashboard-url>` with your cluster's data science gateway URL.
170171
- `MLFLOW_TRACKING_TOKEN` - Required for OpenShift only. Your OpenShift authentication token, obtained from the OpenShift console.
171172
- `MLFLOW_EXPERIMENT_NAME` - A descriptive name for your experiment (e.g., "AutoGen MCP Demo")
@@ -298,9 +299,9 @@ CONTAINER_IMAGE=quay.io/your-username/autogen-mcp-agent:latest
298299

299300
Examples:
300301

301-
- Quay.io: `quay.io/your-username/autogen-mcp-agent:latest`
302-
- Docker Hub: `docker.io/your-username/autogen-mcp-agent:latest`
303-
- GHCR: `ghcr.io/your-org/autogen-mcp-agent:latest`
302+
- Quay.io: `quay.io/your-username/autogen-mcp-agent:latest`
303+
- Docker Hub: `docker.io/your-username/autogen-mcp-agent:latest`
304+
- GHCR: `ghcr.io/your-org/autogen-mcp-agent:latest`
304305

305306
#### Preview manifests
306307

@@ -335,6 +336,7 @@ make undeploy
335336
```
336337

337338
> **Note:** `make undeploy` removes only the agent. To also remove the MCP server:
339+
>
338340
> ```bash
339341
> make undeploy-mcp
340342
> ```

0 commit comments

Comments
 (0)