Key Points

Introduction to Advanced Research Software AI Coding


  • Treat and review AI-generated code before use with at least the same level of scrutiny as human-written code.
  • Intentional software engineering discipline and practices becomes more important, not less, when using AI-assisted development.
  • Following established software engineering stage-gated processes for requirements, design, implementation, and testing can help mitigate the risks.
  • Apply automated quality checks such as linting, testing, static analysis, and security scanning.
  • Restrict AI agents using least-privilege access and avoid using them on production systems.
  • Ensure human approval is required for high-risk actions such as deployments, infrastructure changes, and data access.

Getting Started


  • Ensure GitHub Copilot extension is installed and you’re logged into your GitHub account.
  • Create a Python virtual environment and install required packages (NumPy and Matplotlib).
  • Instructions files help standardize code style, enforce data integrity, and improve Copilot’s suggestions across a whole project.

Planning and Task-based Approach to Software Development


  • Use the planning agent to create structured plans before implementation.
  • Create custom skills to encapsulate common development tasks.
  • Always review AI-generated code, tests, and documentation carefully.
  • Consider whether dedicated tools might be more appropriate than AI for certain tasks.
  • AI is most valuable for scaffolding, boilerplate generation, and preliminary content. The real value is what you add yourself and how you refine it.

Process-based Development Approach using Agents


  • Create separate agents for distinct development phases to maintain clarity and enable careful review.
  • Custom agents provide more control and flexibility than built-in planning tools.
  • Use YAML front matter to specify agent metadata, tools, and permissions following the principle of least privilege.
  • Each agent output should be reviewed and refined before proceeding to the next phase.
  • Specification-driven development reduces ambiguity and keeps developers in control of the process.
  • Extend this approach by tailoring agents to your domain, adding new phases, or creating agents for maintenance and agile workflows.