Agent skill
ocaml-rfc-integration
Working with IETF RFCs in OCaml projects. Use when mentioning RFC numbers, implementing internet standards, adding specification documentation, or discussing protocol compliance.
Stars
163
Forks
31
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/testing/ocaml-rfc-integration-avsm-ocaml-claude-marketp-fd4a144c
SKILL.md
RFC Integration for OCaml Projects
When to Use This Skill
Invoke this skill when:
- User mentions implementing an RFC
- Adding RFC citations to documentation
- Fetching RFC specifications
- Validating code against RFC requirements
- Discussing internet protocol standards
RFC Fetching and Storage
Fetching RFCs
Always fetch RFCs in plain text format from:
https://datatracker.ietf.org/doc/html/rfcXXXX.txt
Important: Use .txt extension, not .html.
Storage Location
Save RFC files to spec/ directory in project root:
spec/rfc6265.txt
spec/rfc3492.txt
Create spec/ directory if it doesn't exist.
OCamldoc RFC Citation Format
Basic RFC Link
ocaml
{{:https://datatracker.ietf.org/doc/html/rfcXXXX}RFC XXXX}
Section-Specific Links
ocaml
{{:https://datatracker.ietf.org/doc/html/rfcXXXX#section-N.M}RFC XXXX Section N.M}
Common Section References
#section-N- Main numbered section#section-N.M- Subsection#appendix-X- Appendix (A, B, C, etc.)
Documentation Patterns
Module-Level Documentation
ocaml
(** RFC 3492 Punycode: A Bootstring encoding of Unicode for IDNA.
This module implements the Punycode algorithm as specified in
{{:https://datatracker.ietf.org/doc/html/rfc3492}RFC 3492}.
{2 References}
{ul
{- {{:https://datatracker.ietf.org/doc/html/rfc3492}RFC 3492} - Punycode}
{- {{:https://datatracker.ietf.org/doc/html/rfc5891}RFC 5891} - IDNA}} *)
Function-Level Documentation
ocaml
val adapt : delta:int -> numpoints:int -> firsttime:bool -> int
(** [adapt ~delta ~numpoints ~firsttime] computes the new bias value.
Implements the bias adaptation algorithm from
{{:https://datatracker.ietf.org/doc/html/rfc3492#section-6.1}RFC 3492 Section 6.1}. *)
Type-Level Documentation
ocaml
type error =
| Overflow of position
(** Arithmetic overflow. See
{{:https://datatracker.ietf.org/doc/html/rfc3492#section-6.4}
RFC 3492 Section 6.4}. *)
| Invalid_digit of position * char
(** Invalid Punycode digit. See
{{:https://datatracker.ietf.org/doc/html/rfc3492#section-5}
RFC 3492 Section 5}. *)
Constants and Parameters
ocaml
val base : int
(** The base value (36) for Punycode encoding.
See {{:https://datatracker.ietf.org/doc/html/rfc3492#section-5}
RFC 3492 Section 5}. *)
Reading and Parsing RFCs
RFC Structure
- Header: RFC number, title, authors, date
- Table of Contents: Section numbers and titles
- Abstract: Brief summary
- Main Body: Numbered sections
- Appendices: Lettered sections
- References: Citations to other documents
Key Sections to Extract
- Introduction - Background and motivation
- Terminology - Key terms (MUST, SHOULD, MAY)
- Algorithm - Core specification
- Security Considerations - Security implications
Validation Workflow
- Read the RFC from
spec/directory - Extract key requirements (MUST, SHOULD, MAY)
- Read implementation code
- Check each requirement is implemented
- Verify error handling matches RFC
- Report gaps or inconsistencies
Best Practices
DO
- Always fetch and save RFC text files to
spec/ - Use section-specific links when possible
- Link error types to their RFC requirements
- Document RFC parameters and constants
- Keep citations consistent across related functions
DON'T
- Link to HTML versions of RFCs
- Assume RFC sections without checking
- Omit section numbers in citations
- Duplicate RFC text verbatim (summarize instead)
Handling RFC Updates
When an RFC obsoletes another:
ocaml
(** Implements {{:https://datatracker.ietf.org/doc/html/rfc6265}RFC 6265}
which obsoletes {{:https://datatracker.ietf.org/doc/html/rfc2965}RFC 2965}. *)
Multiple RFC References
ocaml
(** IDNA-compatible encoding combining
{{:https://datatracker.ietf.org/doc/html/rfc5891}RFC 5891} (IDNA Protocol)
with {{:https://datatracker.ietf.org/doc/html/rfc3492}RFC 3492} (Punycode). *)
Didn't find tool you were looking for?