Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
---
name: sml-installation
description: Install the SML runtime (Rust parser with Python bindings) so that agents can parse and execute SML tags programmatically.
name: aml-installation
description: Install the AML runtime (Rust parser with Python bindings) so that agents can parse and execute AML tags programmatically.
---

# SML Installation Guide
# AML Installation Guide

Use this guide when you need to install the SML runtime for programmatic parsing and execution.
Use this guide when you need to install the AML runtime for programmatic parsing and execution.

## Quick Install (Python)

```bash
pip install sml
pip install aml
```

This installs pre-built wheels with the Rust parser compiled for your platform.
Expand All @@ -23,23 +23,23 @@ Requirements:
- maturin (`pip install maturin`)

```bash
git clone https://github.com/sergio-sisternes-epam/aslm.git
cd aslm
git clone https://github.com/sergio-sisternes-epam/aml.git
cd aml
maturin develop --release
```

## Verify Installation

```python
from sml import parse, execute, SmlRegistry
from aml import parse, execute, AmlRegistry

# Parse SML from a prompt
# Parse AML from a prompt
doc = parse('<skill interface="testing" language="python">Run tests</skill>')
print(doc.node_count) # 1
print(doc.invocations()) # ['testing']

# Set up a registry
registry = SmlRegistry()
registry = AmlRegistry()
registry.register_interface("testing", "Run automated tests")
registry.register_implementation(
"pytest-impl", "testing",
Expand Down Expand Up @@ -67,11 +67,11 @@ Add to your `Cargo.toml`:

```toml
[dependencies]
sml-core = "0.1"
aml-core = "0.1"
```

```rust
use sml_core::{parse, SkillRegistry, ExecutionContext};
use aml_core::{parse, SkillRegistry, ExecutionContext};

let doc = parse(r#"<skill interface="testing">content</skill>"#).unwrap();
let registry = SkillRegistry::new();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
---
name: sml-usage-guide
description: Teach an agent how to emit valid SML (Skill Markup Language) tags for declarative skill invocation inside prompts, including interface definitions, implementation bindings, scoping, nesting, params, and execution policies.
name: aml-usage-guide
description: Teach an agent how to emit valid AML (Agent Markup Language) tags for declarative skill invocation inside prompts, including interface definitions, implementation bindings, scoping, nesting, params, and execution policies.
---

# SML Usage Guide
# AML Usage Guide

Use this guide when you need to invoke skills declaratively inside a prompt using SML syntax.
Use this guide when you need to invoke skills declaratively inside a prompt using AML syntax.

## Core Syntax

SML uses XML-like `<skill>` tags embedded in natural text:
AML uses XML-like `<skill>` tags embedded in natural text:

```xml
<skill interface="unit-testing" language="python">
Expand Down Expand Up @@ -123,12 +123,12 @@ Here `fetch-url` runs first, its output becomes the scope for `summarise`.

1. **Never nest definitions inside invocations** — definitions are top-level only
2. **One resolution target per invocation** — use `interface` OR `impl` OR `name`
3. **Results are escaped** — skill output is never re-parsed as SML
3. **Results are escaped** — skill output is never re-parsed as AML
4. **Content is the scope** — everything between open/close tags is what the skill sees
5. **Definitions don't execute** — they only register capabilities

## When NOT to use SML
## When NOT to use AML

- Simple function calls with no scoping → use tool_call syntax instead
- One-shot queries with no composition → plain text is fine
- Highly dynamic dispatch → use agentic reasoning, then emit SML for the chosen skill
- Highly dynamic dispatch → use agentic reasoning, then emit AML for the chosen skill
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# System Prompt Examples

## ReAct + SML
## ReAct + AML

```
You are an AI agent that uses ReAct (Reason + Act) with SML for structured skill invocation.
You are an AI agent that uses ReAct (Reason + Act) with AML for structured skill invocation.

When you need to invoke a skill, emit an SML tag:
When you need to invoke a skill, emit an AML tag:

Think: I need to run tests on the auth module.
Act:
Expand All @@ -23,10 +23,10 @@ Act:
</skill>
```

## Plan-and-Execute + SML
## Plan-and-Execute + AML

```
You are an AI agent that plans before executing. Use SML to invoke skills.
You are an AI agent that plans before executing. Use AML to invoke skills.

Plan:
1. Fetch the requirements document
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ labels: bug

## Environment

- SML version:
- AML version:
- Rust version (`rustc --version`):
- Python version (if applicable):
- OS:
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
blank_issues_enabled: false
contact_links:
- name: Ask a Question
url: https://github.com/sergio-sisternes-epam/aslm/discussions
url: https://github.com/sergio-sisternes-epam/aml/discussions
about: Use GitHub Discussions for questions and general help.
- name: Security Vulnerability
url: mailto:sergio_sisternes@epam.com
Expand Down
2 changes: 1 addition & 1 deletion AUTHORS
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Authors

SML is maintained by the following contributors:
AML is maintained by the following contributors:

Sergio Sisternes <sergio_sisternes@epam.com>
6 changes: 3 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Added

- Initial Rust parser and executor (`sml-core`)
- Python bindings via PyO3 (`sml-python`)
- SML language specification in `docs/spec/`
- Initial Rust parser and executor (`aml-core`)
- Python bindings via PyO3 (`aml-python`)
- AML language specification in `docs/spec/`
- Conformance test suite in `tests/conformance/`
8 changes: 4 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Contributing to SML
# Contributing to AML

Thank you for your interest in contributing! This document explains how to get involved.

Expand All @@ -10,11 +10,11 @@ Please be respectful and constructive in all interactions. See [CODE_OF_CONDUCT.

### Reporting Bugs

Open a [bug report](https://github.com/sergio-sisternes-epam/aslm/issues/new?template=bug_report.md) with a clear description and a minimal reproduction case.
Open a [bug report](https://github.com/sergio-sisternes-epam/aml/issues/new?template=bug_report.md) with a clear description and a minimal reproduction case.

### Suggesting Features

Open a [feature request](https://github.com/sergio-sisternes-epam/aslm/issues/new?template=feature_request.md) describing the problem you want to solve and your proposed solution.
Open a [feature request](https://github.com/sergio-sisternes-epam/aml/issues/new?template=feature_request.md) describing the problem you want to solve and your proposed solution.

### Submitting Changes

Expand Down Expand Up @@ -43,7 +43,7 @@ cargo build

# Build the Python extension (development mode)
pip install maturin
maturin develop --manifest-path crates/sml-python/Cargo.toml
maturin develop --manifest-path crates/aml-python/Cargo.toml
```

### Running Tests
Expand Down
30 changes: 15 additions & 15 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
[workspace]
members = ["crates/sml-core", "crates/sml-python"]
members = ["crates/aml-core", "crates/aml-python"]
resolver = "2"

[workspace.package]
version = "0.1.0"
edition = "2021"
license = "Apache-2.0"
repository = "https://github.com/sergio-sisternes-epam/aslm"
repository = "https://github.com/sergio-sisternes-epam/aml"

[workspace.lints.clippy]
all = { level = "warn", priority = -1 }
Expand Down
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
# SMLSkill Markup Language
# AMLAgent Markup Language

A lightweight, XML-inspired markup language that enables agents to declaratively invoke modular, scoped, and nestable skills directly inside prompts.

## Overview

SML provides two independent layers:
AML provides two independent layers:

- **Runtime Layer**: A high-performance parser and executor implemented in Rust + PyO3
- **Distribution & Knowledge Layer**: An APM package for agent tooling ecosystems

## Quick Start

```bash
pip install sml
pip install aml
```

```python
from sml import parse, execute, SmlRegistry
from aml import parse, execute, AmlRegistry

doc = parse("""
<skill interface="code-review" language="python">
Expand All @@ -25,7 +25,7 @@ doc = parse("""
</skill>
""")

registry = SmlRegistry()
registry = AmlRegistry()
registry.register_interface("code-review", "Review code for issues")
registry.register_implementation(
"python-review", "code-review",
Expand All @@ -35,7 +35,7 @@ registry.register_implementation(
result = execute(doc, registry)
```

## SML Syntax
## AML Syntax

```xml
<!-- Invoke a skill -->
Expand Down Expand Up @@ -67,14 +67,14 @@ result = execute(doc, registry)

- [Language Specification](docs/spec/)
- [Conformance Suite](tests/conformance/)
- [API Reference (Rust)](crates/sml-core/)
- [API Reference (Python)](crates/sml-python/)
- [API Reference (Rust)](crates/aml-core/)
- [API Reference (Python)](crates/aml-python/)

## Architecture

```
┌─────────────────────────────────────────┐
│ Agent Prompt (contains SML tags) │
│ Agent Prompt (contains AML tags) │
└─────────────┬───────────────────────────┘
│ parse()
Expand All @@ -89,7 +89,7 @@ result = execute(doc, registry)
│ result injection
┌─────────────────────────────────────────┐
│ Output (SML tags replaced by results) │
│ Output (AML tags replaced by results) │
└─────────────────────────────────────────┘
```

Expand Down
10 changes: 5 additions & 5 deletions SUPPORT.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,20 @@
Start with the project documentation:

- [Language Specification](docs/spec/)
- [API Reference (Rust)](crates/sml-core/)
- [API Reference (Python)](crates/sml-python/)
- [API Reference (Rust)](crates/aml-core/)
- [API Reference (Python)](crates/aml-python/)

## Asking Questions

Use **[GitHub Discussions](https://github.com/sergio-sisternes-epam/aslm/discussions)** for:
Use **[GitHub Discussions](https://github.com/sergio-sisternes-epam/aml/discussions)** for:

- Questions about using SML
- Questions about using AML
- Ideas and general discussion
- Sharing what you've built

## Reporting Bugs

Use **[GitHub Issues](https://github.com/sergio-sisternes-epam/aslm/issues)** for confirmed bugs. Please search existing issues before opening a new one.
Use **[GitHub Issues](https://github.com/sergio-sisternes-epam/aml/issues)** for confirmed bugs. Please search existing issues before opening a new one.

## Security Issues

Expand Down
4 changes: 2 additions & 2 deletions apm.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: sml
name: aml
version: 0.1.0
description: "Skill Markup Language — declarative skill invocation for agent prompts"
description: "Agent Markup Language — declarative skill invocation for agent prompts"
license: MIT
target: [copilot, claude, cursor, codex, opencode]
4 changes: 2 additions & 2 deletions crates/sml-core/Cargo.toml → crates/aml-core/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
[package]
name = "sml-core"
name = "aml-core"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
description = "SML (Skill Markup Language) parser and executor"
description = "AML (Agent Markup Language) parser and executor"

[dependencies]

Expand Down
4 changes: 2 additions & 2 deletions crates/sml-core/src/ast.rs → crates/aml-core/src/ast.rs
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ pub struct Param {
pub span: Span,
}

/// A node in the SML AST.
/// A node in the AML AST.
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Node {
/// A skill tag (invocation or definition).
Expand Down Expand Up @@ -191,7 +191,7 @@ impl Node {
}
}

/// The root of an SML document.
/// The root of an AML document.
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Document {
pub nodes: Vec<Node>,
Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ impl std::fmt::Display for ParseError {

impl std::error::Error for ParseError {}

/// Parse an SML document from a string.
/// Parse an AML document from a string.
///
/// The parser is embedded-tolerant: it extracts `<skill>` and `<param>` tags
/// from arbitrary text, treating everything else as literal `Text` nodes.
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loading
Loading