Skip to content

docs: add an AI configuration assistant skill - #214

Open
aaron-congo wants to merge 9 commits into
mainfrom
docs/configuration-assistant
Open

aaron-congo wants to merge 9 commits into
mainfrom
docs/configuration-assistant

Conversation

@aaron-congo

Copy link
Copy Markdown
Contributor

Summary

Add a self-contained AI configuration assistant skill for the Ruby wrapper

Description

Adds docs/RUBY-WRAPPER-CONFIGURATION-ASSISTANT.md, a single markdown file users can load into an AI tool (Kiro and Claude Code skills, Cursor rules, Claude Projects, ChatGPT, Amazon Bedrock, or a plain chat) so it can:

  • interview the user and produce a working database.yml entry or direct WrapperPgConnection / WrapperMysql2Client code,
  • review an existing configuration,
  • answer parameter and plugin questions,
  • diagnose problems caused by configuration.

The README gets a short "Configuring the Wrapper with AI Tools" section linking to it.

Scope and content

  • Written for the released 1.0.1 behavior. Known issues are described as "Known issue (1.0.1)" notes, to be updated when the next release ships.
  • Follows the Ruby docs and source rather than JDBC's: Ruby plugin codes, parameter names and units (seconds, _sec), and dialect codes. It also covers what's specific to the Active Record adapters: which database.yml keys reach the driver, failover errors under Active Record, variables:, pool sizing, and multiple databases and roles.
  • Includes a JDBC-to-Ruby name translation table (for example failover2 maps to failover, and failoverTimeoutMs divided by 1000 gives failover_timeout_sec).
  • States which missing features are absent by design: read/write splitting, an internal connection pool, and enhanced failure monitoring. For everything else, it doesn't promise future features.
  • A maintainer comment at the top lists the sections to update when a release changes plugins, parameters, defaults or known issues.

How it was checked

  • Fact-checked against the gem source, the Ruby docs, and the CHANGELOG, plus the AWS Blue/Green and Secrets Manager docs for AWS-side claims.
  • Tested with a local eval suite, kept outside this repo: 29 cases × 3 runs each, with deterministic checks of the generated configs and an LLM grader scored against each case's expectations. The grader is itself checked with deliberately wrong answers.
    • Sonnet 5.5: 87/87
    • Haiku 5.5: 80/87. The remaining misses are one-off mistakes on Rails/AWS topics outside the skill's scope, with no repeated failure in any case.
  • The aws_credentials_provider Active Record recipe in §6.4 was tested in a throwaway Rails app on Active Record 7.2, 8.0 and 8.1.

Trying it

Copy the file into your AI tool's knowledge or rules, or paste it at the start of a chat. Then ask something like "Help me configure the AWS Advanced Ruby Driver Wrapper for my Rails app on Aurora PostgreSQL."

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@aaron-congo
aaron-congo requested a review from a team as a code owner October 19, 2026 21:58
2. Explain the *minimum* set of choices that drove it (one or two sentences per non-trivial parameter).
3. End with: *"Want me to walk through tradeoffs or show alternative configurations? Or shall I help you wire this into your code?"*
- **Match the user's style.** Don't over-explain to experts. Don't under-explain to novices.
- **Use placeholders for secrets.** Never echo real DB passwords, IAM tokens, AWS credentials, or KMS key ARNs a user pastes. Use `<password>`, `<secret-arn>`, `<your-kms-key-arn>`, etc. In Rails, suggest `<%= ENV['DB_PASSWORD'] %>` or Rails credentials rather than a literal password.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Question for consistency should they have 'your-' at the start or no?

### 1.6 Hard rules

- Never invent plugin codes, parameter names, or default values not in this document. If a user asks about something unfamiliar, say *"I don't have that in my reference. Check the Ruby wrapper docs at `https://aws.github.io/aws-advanced-wrapper-docs/ruby/overview`."*
- **Plugin codes and parameter names are `snake_case`.** Plugin codes: `failover`, `gdb_failover`, `initial_connection`, `custom_endpoint`, `iam`, `secrets_manager`, `bg`, `kms_encryption`. That is the complete built-in list as of the version baseline at the end of this document.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If possible can we keep the plugin list in only one place? We have this in plugin ordering for example

Comment on lines +1094 to +1096
### 8.3 Driver dialects

Chosen automatically from the entry point (`WrapperPgConnection` / `aws_postgresql` → `pg`; `WrapperMysql2Client` / `aws_mysql2` → `mysql2`). There is no parameter to set.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What value does this add for the user?

- §17 when a listed feature is added.
-->

# AWS Advanced Ruby Driver Wrapper - Configuration Assistant

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants