Add some basic AI agent skills for BoringSSL development

And register the directory in .agents/skills.json for agent discovery.

Change-Id: I8bd7dfbab4c4e6c4163b7f0c2c3b76dc6a6a6964
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/98227
Reviewed-by: David Benjamin <davidben@google.com>
Auto-Submit: Lily Chen <chlily@google.com>
Commit-Queue: Lily Chen <chlily@google.com>
diff --git a/.agents/skills.json b/.agents/skills.json
new file mode 100644
index 0000000..76489ed
--- /dev/null
+++ b/.agents/skills.json
@@ -0,0 +1,5 @@
+{
+  "entries": [
+    { "path": "agents/skills" }
+  ]
+}
diff --git a/agents/skills/add_error_code/SKILL.md b/agents/skills/add_error_code/SKILL.md
new file mode 100644
index 0000000..36da8f9
--- /dev/null
+++ b/agents/skills/add_error_code/SKILL.md
@@ -0,0 +1,25 @@
+---
+name: add-error-code
+description: How to add a new error code in BoringSSL.
+---
+
+# Adding a New Error Code
+
+To add a new error code, you only need to use it in the source code and then run the error generation script. The script will automatically define it in the header and update the error database.
+
+## Steps
+
+1.  **Use the Error Code**:
+    *   Use the new error code directly in your C/C++ source file (e.g., `EVP_R_NEW_ERROR_CODE`). It must start with the correct library prefix (e.g., `EVP_R_`, `SSL_R_`).
+
+2.  **Run the Error Generator**:
+    *   Run [util/make_errors.go](../../../util/make_errors.go), passing the lowercase library name (e.g., `evp`, `ssl`).
+    *   Example:
+        ```bash
+        go run util/make_errors.go evp
+        ```
+    *   The script will automatically:
+        *   Find the new error code in the source.
+        *   Assign it a numeric value.
+        *   Add the `#define` to the appropriate header in [include/openssl](../../../include/openssl).
+        *   Update the `.errordata` file in [crypto/err](../../../crypto/err).
diff --git a/agents/skills/add_object_nid_oid/SKILL.md b/agents/skills/add_object_nid_oid/SKILL.md
new file mode 100644
index 0000000..7c547bd
--- /dev/null
+++ b/agents/skills/add_object_nid_oid/SKILL.md
@@ -0,0 +1,24 @@
+---
+name: add-object-nid-oid
+description: How to add a new object with a NID and/or OID to BoringSSL.
+---
+
+# Adding a New NID or OID
+
+To add a new ASN.1 object (with a NID and/or OID) to BoringSSL, you must add it to the objects definition file and regenerate the generated headers and lookup tables.
+
+Refer to [crypto/obj/README.md](../../../crypto/obj/README.md) for an overview of the generated files.
+
+## Steps
+
+1.  **Update `objects.txt`**:
+    *   Add the new object to [crypto/obj/objects.txt](../../../crypto/obj/objects.txt).
+    *   Follow the format described in [crypto/obj/README.md](../../../crypto/obj/README.md) (in the section titled "`objects.txt` Format Reference").
+
+2.  **Regenerate Files**:
+    *   The generator script [crypto/obj/objects.go](../../../crypto/obj/objects.go) **must be run from the `crypto/obj` directory** because it relies on relative paths for its inputs and outputs.
+    *   Run the following command:
+        ```bash
+        cd crypto/obj && go run objects.go
+        ```
+    *   This will update `obj_mac.num` (to stabilize NIDs), `obj_dat.h`, and `include/openssl/nid.h`.
diff --git a/agents/skills/add_source_file/SKILL.md b/agents/skills/add_source_file/SKILL.md
new file mode 100644
index 0000000..63678f8
--- /dev/null
+++ b/agents/skills/add_source_file/SKILL.md
@@ -0,0 +1,18 @@
+---
+name: add-source-file
+description: How to add a new source file to the BoringSSL build.
+---
+
+# Adding a Source File to the Build
+
+To add a new source file (C/C++, header, or assembly) to BoringSSL, you must update the build configuration and regenerate the build files.
+
+## Steps
+
+1.  **Update `build.json`**:
+    *   Add the new file to the correct section (e.g., `srcs`, `hdrs`, `internal_hdrs`) under the appropriate target in [build.json](../../../build.json).
+    *   For the schema of `build.json`, refer to the Go structs in [util/pregenerate/build.go](../../../util/pregenerate/build.go).
+
+2.  **Update Pregenerated Files**:
+    *   After modifying `build.json`, you must regenerate the build files.
+    *   Refer to [gen/README.md](../../../gen/README.md) or use the [update_pregenerated_files](../update_pregenerated_files/SKILL.md) skill to update the pre-generated files.
diff --git a/agents/skills/build_and_test/SKILL.md b/agents/skills/build_and_test/SKILL.md
new file mode 100644
index 0000000..523b3b9
--- /dev/null
+++ b/agents/skills/build_and_test/SKILL.md
@@ -0,0 +1,11 @@
+---
+name: build-and-test
+description: How to build BoringSSL and run its tests.
+---
+
+# Building and Testing BoringSSL
+
+To build BoringSSL and run its tests, you must refer to the official documentation in the repository.
+
+1. Read [BUILDING.md](../../../BUILDING.md) to understand the prerequisites, build steps (using CMake and Ninja), and how to run the test suite.
+2. Follow the instructions in that file for the target platform.
diff --git a/agents/skills/run_ssl_go_tests/SKILL.md b/agents/skills/run_ssl_go_tests/SKILL.md
new file mode 100644
index 0000000..0733983
--- /dev/null
+++ b/agents/skills/run_ssl_go_tests/SKILL.md
@@ -0,0 +1,27 @@
+---
+name: run-ssl-go-tests
+description: How to run BoringSSL's ssl/test/runner suite (protocol-level BoGo tests)
+---
+
+# Running BoringSSL Protocol-Level Tests (BoGo Tests aka blackbox tests)
+
+This skill describes how to run and configure BoringSSL's protocol-level test suite, which uses a Go-based test harness (`runner`) and a C++ shim (`bssl_shim`).
+
+To run and work with these tests, you must refer to the following documentation:
+
+1.  **Overview and Running**: Read [ssl/test/README.md](../../../ssl/test/README.md) for an overview of the test suite and basic instructions on how to run it manually using `go test` in the `ssl/test/runner` directory.
+2.  **Build Integration**: Refer to [BUILDING.md](../../../BUILDING.md) (specifically the "Running Tests" section) for how these tests are integrated into the CMake/Ninja build system (e.g., `ninja run_tests`).
+
+## Quick Reference
+
+*   **Running all tests via Go**:
+    ```bash
+    cd ssl/test/runner && go test
+    ```
+*   **Listing/Filtering flags**:
+    To see available flags for the runner, build the test binary and run with `-help`:
+    ```bash
+    cd ssl/test/runner
+    go test -c
+    ./runner.test -help
+    ```
diff --git a/agents/skills/update_pregenerated_files/SKILL.md b/agents/skills/update_pregenerated_files/SKILL.md
new file mode 100644
index 0000000..19c4447
--- /dev/null
+++ b/agents/skills/update_pregenerated_files/SKILL.md
@@ -0,0 +1,13 @@
+---
+name: update-pregenerated-files
+description: How to regenerate/update pre-generated files (e.g., perlasm, build files) in BoringSSL.
+---
+
+# Regenerating Pre-generated Files
+
+BoringSSL checks in a number of pre-generated build artifacts. If you modify any inputs to these files, they must be regenerated.
+
+To regenerate these files, refer to the following documentation:
+
+*   [gen/README.md](../../../gen/README.md) - Instructions on how to run the pregenerate tool, check if files are up-to-date, and filter the generation.
+*   [BUILDING.md](../../../BUILDING.md) (specifically the "Pre-generated Files" section) - Information on required dependencies (Go, Perl, Clang) and platform-specific setup.